【发布时间】:2014-08-24 15:06:52
【问题描述】:
我有一个读取 CSV 文件的简短脚本,如下所示:
$csv = new SplFileObject($pathToFile, 'r');
while (!$csv->eof() && ($row = $csv->fgetcsv()) && $row[0] !== null) {
var_dump($row);
}
这工作正常,除了一些非标准字符有问题。 CSV中有一些德语单词,我的具体问题是变音符号有困难。它输出的行类型的示例是:
array(5) {
[0]=>
string(6) "J¦rgen"
[1]=>
string(8) "Lastname"
[2]=>
string(14) "name@domain.de"
[3]=>
string(7) "Example"
[4]=>
string(7) "Example"
}
Jürgen 中的 ü 被替换为 ¦ 字符。
我之前尝试过输入以下代码:
mb_internal_encoding('UTF-8');
但它没有任何效果。
在Vi中打开csv文件显示ü成功,说明文件在服务器上是正确的。
谁能建议 PHP 在解析 CSV 时如何成功处理德语字符?
【问题讨论】:
-
为我工作。假设您在终端中执行它,您使用的是哪种终端编码?用浏览器试试。
-
我从命令行运行它,但我做了一些调整以从浏览器运行,同样的事情发生了。 CSV 中的值被放入 MySQL 数据库表中,该表也没有变音字符。 (同一系统中的其他 PHP 脚本,其中数据来自 HTTP POST 而不是 CSV 文件,成功处理变音符号并将它们插入 MySQL 没有问题)。
-
尝试使用
iconv(在命令行上)将文件转换为utf-8。您需要先找出 csv 文件的输入编码是什么。为此,您需要查看生成 csv 的程序。如果这是不可能的,我最好的猜测是 windows-CP-1252 -
我最初是通过 PuTTY 使用 UTF-8 运行它的。
-
您手动编写了 csv?
标签: php csv splfileobject