我正在使用 Excel 2010 Professional Plus 创建 Excel 文件。
稍后我尝试将其导出为 UTF-8 .csv 文件。
我通过将其另存为 CSV(符号分隔......抱歉,我不知道那里的确切措辞
但我没有英文版本,我担心它的翻译与 1:1 不同)。
我单击“工具”->“网络选项”并选择 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 作为屏幕上的结果(因为这是“错误”,我删除了结果的所有其他部分)。
- 如果我使用 notedpad++ 打开文件并查看编码,我会看到“ANSI”而不是 UTF-8。
- 如果我将 notepad++ 中的编码更改为 UTF8.... ö,ä,... 会被特殊字符替换,我必须手动更正。
如果我走另一条路线并使用 notedpad++ 创建一个新的 UTF-8 文件并放入与 Excel 文件中相同的数据,当我使用 php 文件打开它时,我会在屏幕上显示“Österreich”。
现在我的问题是,为什么它不能在 Excel 中运行,那么我在这里做错了什么吗?或者我忽略了什么?
Edit:
由于该程序最终会安装在客户提供的windows服务器上,
需要一个解决方案,不需要安装额外的工具(php 库,...可以,但必须安装 vm-ware 或 cygwin,...则不行)。
此外,服务器上也不会本地安装 Excel(或 Office)作为
客户将能够通过文件上传对话框(对话框本身
不是问题的一部分,因为我知道如何处理这些问题,而且当我创建一个 excel 文件并将其在本地安装了 excel 的测试机上将其转换为 .csv 时,我偶然发现了问题本身)。
Tnx