【问题标题】:convert mixed text to UTF-8将混合文本转换为 UTF-8
【发布时间】:2018-02-06 19:37:27
【问题描述】:

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

提前致谢!

【问题讨论】:

  • 看看,它可能会有所帮助。 stackoverflow.com/questions/21322702/…
  • 仅供参考:像“toUTF8”这样的函数没有指定 what from 和“fixUTF8”(这是什么意思?)绝对是无稽之谈。

标签: php encoding utf-8 binary


【解决方案1】:

您的所有文本都已采用 UTF-8 编码,这与问题无关。问题是“C”实际上是“C”,即 U+0421 西里尔大写字母 ES。这是一个完全错误的字符,只是看起来像拉丁文“C”。您无法通过编码转换来解决此问题,您需要通过将字母替换为您需要的实际字母来解决此问题。这可能是相当手动的,除非你能想出一个字符列表来寻找和替换它们。

【讨论】:

    【解决方案2】:

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

    下 c = 01100011

    上 C = 01000011

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      相关资源
      最近更新 更多