【发布时间】:2012-10-27 07:09:12
【问题描述】:
我正在使用 excel 2010 Professional plus 创建一个 excel 文件。 稍后我尝试将其导出为 UTF-8 .csv 文件。 我通过将其保存为 CSV 来做到这一点(符号分隔.....sry 我不知道那里的确切措辞 但我没有英文版,我担心它的翻译与 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 的测试机器上创建一个 excel 文件并将其转换为 .csv 时,我偶然发现了问题本身。 p>
Tnx
【问题讨论】: