使用mb_detect_encoding的UTF-8格式的Word中的卷曲引号


Curly quotes from Word in UTF-8 using mb_detect_encoding

当检测到Word中某些文本的编码(保存为CSV文件)时,使用。。。

$encoding = mb_detect_encoding($value, 'WINDOWS-1252, ISO-8859-1', true);
$value = iconv($encoding, 'UTF-8//IGNORE', $value);

如果一个字符串有大引号,则$encoding将被设置为ISO-8859-1,而不是应该设置的WINDOWS-1252,因此该字符串将显示为"self-motive",周围有有趣的框,而不是UTF-8编码中的"self-active"。

除了替换花引号之外,还有什么想法可以解决这个问题,因为这也会影响其他字符?

Windows-1252和ISO-8859-1仅在字节7F到9F方面有所不同。它们存在于前者中,但不存在于后者中。如果你知道你的编码是Windows-1252或ISO-8859-1,你可以通过这些字节的存在来确定它是什么。如果不包括这样的字节,并且您知道它是这两种编码之一,则可以从其中之一进行转换。

我曾经创建了一个函数,将几乎所有内容转换为UTF8,它内部还有一些内容嗅探功能,这可能对你有帮助吗?

http://php.net/manual/function.utf8-encode.php#102382