1

我正在用 php 读取一个 CSV 文件,据我所知——这类文件可以有任何由 hoomans omg发明的编码等等......我想我有一个 MacRoman ANSI 编码的 CSV,我我在 Mac 上工作。

到目前为止,一切都很好(一点都不好,但那是另一个话题)。现在,在遍历这些行时,我有一个值,例如:

Z�rich

显然,它应该是“苏黎世”——“ü”不见了。

现在,我几乎尝试了任何东西.. mb_detect_encoding 说“假”所以,他不明白它是什么......

然后我在这里找到了 Sebastian Grignoli 的天才班->检测编码并使一切都变成 UTF-8

看起来不错但是......我得到的是:

ZŸrich

不是我所期望的“ü”:D

现在我发现,“utf8_encode”会以某种方式工作,它会生成:

Z\u009Frich

但是..现在呢?如果我将它直接放入数据库,最终值为“Zrich”,这意味着它仍然不是真正的 UTF-8,或者数据库只是在与转义变体作斗争?当我对该值进行 mb_detect_encoding 时,他现在说“UTF-8”.. 很好.. 但我怎样才能走得更远?我怎样才能在 UTF-8 中以正确的方式获得我的“苏黎世”?

4

2 回答 2

3

您可能可以iconv用于转换。在我的安装中,MacRoman 编码被简单地称为"MAC"

$city = "Z\x9frich";
$city = iconv("MAC", "UTF-8", $city); 
echo $city; // Output: Zürich
于 2013-09-11T21:05:52.830 回答
1

尝试先用 iconv 转换所有文件。稍后导入。或者迭代每一行并使用 iconv 进行转换。

您必须知道文件的原始编码。

于 2013-09-11T21:53:55.317 回答