我有一些 csv 文件需要使用 php 导入到我们的系统中。我住在挪威,我们有 3 个特殊字符(æøå 和大写的 ÆØÅ)。问题是大写版本从我的字符串中消失了。小写字母显示为 ?,但使用 utf8_encode 时,我得到了正确的字母。
我正在使用以下函数导入和读取 csv 文件。转储 $arr
$row = 1;
$arr = array();
if (($handle = fopen($imp['importBreddegave'], "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
$arr[$row][$c] = $data[$c];
}
}
fclose($handle);
}
我想我需要以某种方式指定字符编码,但我不知道如何做。据我所知,按照标准,cvs 文件由 WINDOWS-1257
编码。我页面的其余部分使用 UTF-8
有人有什么巧妙的技巧吗?
最佳答案
如果您的页面输出 UTF-8 数据(或更好:声明它通过 HTTP header /元字符集输出 UTF-8),您应该确保输出的数据也是 UTF-8。 您在 Windows-1257 中输出数据,尽管您的页面声明它是 UTF-8,导致字符无法正确呈现。
使用 utf8_encode 将它们转换为 utf8(更好,因为 utf8_encode 假定您的源字符集是 ISO-8859-1,而事实并非如此)iconv ( http://php.net/iconv )
关于php - Excel 生成的 CSV,特殊字符消失 (ÆØÅ) - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8210015/