我正在使用Excel 2010专业增强版创建一个Excel文件。 之后,我尝试将其导出为UTF-8 .csv文件。 我通过将其保存为CSV(符号分隔.....抱歉,我不知道确切的措辞)来实现这一点。 然后我点击工具->网页选项并选择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时遇到的问题本身)。
Tnx