我正在使用 excel 2010 Professional plus 创建一个 excel 文件。稍后我尝试将其导出为 UTF-8 .csv 文件。我通过将其保存为 CSV 来做到这一点(符号分隔.....对不起,我不知道那里的确切措辞,但我没有英文版,我担心它的翻译方式与 1:1 不同)。在那里我单击工具-> weboptions 并选择 unicode (UTF-8) 作为编码。.csv 示例如下:
ID;englishName;germanName
1;Austria;Österreich
到目前为止一切顺利,但如果我现在用我的 php 代码打开文件:
header('Content-Type: text/html; charset=UTF-8');
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
setlocale(LC_ALL, 'de_DE.utf8');
$fp=fopen($filePathName,'r');
while (($dataRow= fgetcsv($fp,0,";",'"') )!==FALSE)
{
print_r($dataRow);
}
- 我得到: sterreich 作为屏幕上的结果(因为那是“错误”,我剪切了结果的所有其他部分)。
- 如果我用 notepad++ 打开文件并查看编码,我会看到“ANSI”而不是 UTF-8。
- 如果我将 notepad++ 中的编码更改为 UTF8.... ö,ä,... 将被特殊字符替换,我必须手动更正。
如果我走另一条路线并使用notepad ++创建一个新的UTF-8文件并输入与excel文件中相同的数据,当我使用php文件打开它时,我会在屏幕上显示“Österreich”。
现在我的问题是,为什么它不能与 excel 一起使用,所以我在这里做错了什么?还是我忽略了什么?
编辑: 由于该程序最终将安装在客户提供的 Windows 服务器上,因此需要一种解决方案,无需安装其他工具(php 库,... 可以,但必须安装 vm-ware 或cygwin,...不是)。此外,服务器上不会本地安装 excel(或 office),因为客户将能够通过文件上传对话框上传 .csv 文件(对话框本身不是问题的一部分,因为我知道如何处理这些问题以及我在创建 excel 文件并将其转换为 .csv 在本地安装了 excel 的测试机器上时偶然发现的问题)。
肿瘤坏死因子