中文乱码

中文Big5码被误认为ASCII
编辑
欧洲生产的某些电脑并无法识别Big5双比特字码的中文字符,相反的,它们会把位于00到7F间的字码视为ASCII,而80到FF间的字码则视为EASCII,例如:
中文字
維
基
百
科
中
文
大
五
碼
Big5码的高位/低位比特
BA
FB
B0
F2
A6
CA
AC
EC
A4
A4
A4
E5
A4
6A
A4
AD
BD
58
对应的ASCII/EASCII字符
º
û
°
ò
¦
Ê
¬
ì
¤
¤
¤
å
¤
j
¤
½
X
也因此,中文字符串“維基百科中文大五碼”会显示为乱码“ºû°ò¦Ê¬ì¤¤¤å¤j¤ ½X”。
UTF-8与Big5的相互转换
编辑
随着UTF-8的普及化,许多繁体中文的IRC频道也逐渐从Big5转变成UTF-8;然而在这种过渡时期中,仍然有不少IRC频道是采用Big5的,所以用户参与了新的频道时,通常会想要先确定自己的字符编码有没有设错,人们最常用的测试字眼不外乎:
编码
内容
UTF-8
中文
測試
導航
Big5
銝剜��
皜祈岫
撠舘⏛
嚙踝蕭乱码问题
编辑
当一段大五码文本被错误地以UTF-8解码再编码再以大五码解码,由于在被以UTF-8解码时的无效字符被以Unicode的“未识别字符(U+FFFD)”作为内码记录,而那替代字符的UTF-8编码的十六进制为“EF BF BD”。当那替代字符因为按UTF-8解码会出现大比例的无效字符而令其大片大片地出现,进而在被UTF-8再编码再以大五码解码后读码框取到UTF-8替代字符的编码的第一个字节和第二个字节的十六进制“EF BF”解码得到“嚙”字,接下来的读码框横跨两个UTF-8替代字符取到第一个UTF-8替代字符的第三个字节和第二个UTF-8替代字符的第一个字节的十六进制“BD EF”解码得到“踝”字,再接下来的读码框取到第二个UTF-8替代字符的第二个字节和第三个字节的十六进制“BF BD”解码得到“蕭”字,连起来就是“嚙踝蕭”。这样的情况反复出现就令其中出现大量“嚙踝蕭”字样。并且由于在被以UTF-8解码时所出现的各种无效字符与有效字符的各种组合,再以大五码解码后其中会有许多不是出现在“嚙踝蕭”子序列中的“嚙”、“蕭”字样。
另外其他编码的非UTF-8文本或非文本二进制数据被错误地以UTF-8解码再编码再以大五码解码也会如上产生嚙踝蕭乱码,然而由于原字节序列的特征会部分地传递至以UTF-8解码后所产生的中间阶段乱码,这样因此由这些方式产生的乱码跟大五码文本被错误地以UTF-8解码再编码再以大五码解码所产生的乱码便具有不同的特征。