我想将字符串转换为UTF-8。问题是有些字母由两个八位字节的二进制代码组成,大部分都是一个八位字节的二进制代码。
这是一个例子:
echo $title; # Shuttle XPС slim C
echo Encoding::fixUTF8(Encoding::toUTF8($title)); # Shuttle XP? slim C
现在,如果将字符串转换为二进制,则可以看到问号c字符在二进制文件中看起来不同:
S = 01010011
h = 01101000
u = 01110101
t = 01110100
t = 01110100
l = 01101100
e = 01100101
= 00100000
X = 01011000
P = 01010000
C = 11010000 10100001
= 00100000
s = 01110011
l = 01101100
i = 01101001
m = 01101101
= 00100000
C = 01000011
所以问题是'C'是'11010000 10100001'而'C'是'01000011'。这发生在很多不同的字母上。有办法解决这个问题吗?
提前致谢!
答案 0 :(得分:2)
您的所有文字都已经过UTF-8编码,与问题无关。问题是“C”实际上是“C”,即U + 0421 CYRILLIC CAPITAL LETTER ES。完全错误的角色只是看起来像拉丁语“C”。您无法通过编码转换来解决这个问题,您需要通过将字母替换为您需要的实际字母来解决这个问题。这可能是相当手动的,除非你能想出一个要注意和替换的字符列表。
答案 1 :(得分:-1)
为什么管理两个八位字节?可以试试这个;
降低c = 01100011
上限C = 01000011