当检测到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