将混合文本转换为UTF-8

时间:2017-08-29 11:05:34

标签: php encoding utf-8 binary

我想将字符串转换为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'。这发生在很多不同的字母上。有办法解决这个问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您的所有文字都已经过UTF-8编码,与问题无关。问题是“C”实际上是“C”,即U + 0421 CYRILLIC CAPITAL LETTER ES。完全错误的角色只是看起来像拉丁语“C”。您无法通过编码转换来解决这个问题,您需要通过将字母替换为您需要的实际字母来解决这个问题。这可能是相当手动的,除非你能想出一个要注意和替换的字符列表。

答案 1 :(得分:-1)

为什么管理两个八位字节?可以试试这个;

  

降低c = 01100011

     

上限C = 01000011