3

PHPmb_detect_encoding()不理解MacRoman编码。我的应用程序允许用户以 csv 格式上传数据,我需要将其转换为 utf8,因为用户不精通技术。我永远无法让他们所有人都了解如何做到这一点并控制他们的编码。

这就是我正在做的事情:

$encoding_detection_order = array('UTF-8', 'UTF-7', 'ASCII', 'ISO-8859-1', 'EUC-JP', 'SJIS', 'eucJP-win', 'SJIS-win', 'JIS', 'ISO-2022-JP', );

$encoding = mb_detect_encoding($value, $detection_order, true);

$converted_value = iconv($encoding, 'UTF-8//TRANSLIT', $value);

这适用于大多数情况,但如果我的用户在 Mac 上并且他们将 CSV 保存在MacRoman编码中,那么上面的代码通常会错误地检测到ISO-8859-1导致iconv()产生错误输出的文本。

例如,重音 e inJaimé的十六进制值为0x8ein MacRoman。在ISO-8859-10x8e字符是Ž,所以当我将它转换为 utf8 时,我只是得到了Ž我应该得到的 utf8 版本é

在此处输入图像描述

我需要能够与MacRoman其他编码动态区分开来,以便正确转换它。

4

0 回答 0