我需要将特殊字符(在本例中为-字符)从cp850转换为unicode,但我无法使用mb_convert_encoding完成此操作。在西班牙语中,正确的转换应该是从-到-,但函数mb_convert_enconding(‘--’,'utf-8')返回的是。
你知道为什么会发生这种情况吗?
提前谢谢。
发布于 2018-03-22 00:26:35
如果对已有的UTF8字符串应用utf8_encode(),它将返回乱码的UTF8输出。
我创建了一个函数来解决所有这些问题。它被称为Encoding::toUTF8()。
您不需要知道字符串的编码是什么。它可以是Latin1 (iso8859-1)、windows1252或UTF8,也可以是它们的混合字符串。Encoding::toUTF8()会将所有内容转换为UTF8。
用法:
require_once('Encoding.php');
use \ForceUTF8\Encoding; // It's namespaced now.
$utf8_string = Encoding::fixUTF8($garbled_utf8_string);下载:
https://github.com/neitanod/forceutf8
示例:
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");将输出:
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football我在一个名为Encoding的类上将函数(forceUTF8)转换为一系列静态函数。新函数是Encoding::toUTF8()。
发布于 2018-03-22 00:23:47
您需要传入源码:
print mb_convert_enconding('Ð', 'utf-8', 'CP850');如果你不这样做,默认的顺序将被用来尝试猜测原始编码,并且它通常首先检测UTF8和/或Latin1。
https://stackoverflow.com/questions/49411573
复制相似问题