|
22
|
| Manos Dilaverakis · 技术社区 · 16 年前 |
|
|
1
19
对。UTF-8是专门为允许这种和其他类似的非Unicode感知处理而设计的。
在UTF-8中,表示有效字符的任何非ASCII字节序列总是以范围内的字节开始。
对于旧的多字节编码来说,情况并非如此,因为一个字节序列的不同部分是不可区分的。这导致了很多问题,例如试图替换shift-jis字符串中的ASCII反斜杠(其中byte
|
|
|
2
5
这是正确的,因为utf-8多字节字符是专门的非ASCII(128+字节值)字符,以一个字节开始,该字节定义了后面的字节数,所以您不能意外地将一个utf-8多字节字符的一部分与另一个字符匹配。 使(抽象地)形象化:
如果你匹配,说,
编辑:参见 bobince 不那么抽象的解释的答案。 |
|
|
3
1
嗯,我 做 举个反例:我有一个utf8编码的设置“.ini”文件,它指定了电子邮件发送者名称等应用设置。它的意思是:
我从那里读到变量
当做 {发送器}
电子邮件在各个方面都是绝对正确的,但发送者完全被破坏了。当UTF字符串出现问题时,还有其他情况(如explode())。转换前是健康的,但转换后不是。很抱歉,似乎没有办法纠正这种行为。
编辑
事实上,
|
|
|
4
0
不,你不能。
|
|
|
5
0
是的,我认为这是正确的,至少我找不到任何反例。 |