中文亂碼中文亂碼是電子資訊系統的中文無法正確顯示文字符號的一種現象,在中文內碼未有標準時情況尤其嚴重[1]。 “万码奔腾”的年代在過去,由於繁體中文使用者缺乏一個具有號召力的內碼標準,不同使用者都會使用各自的標準。比較普遍的是銀行由於主要使用IBM的商業電腦,很自然地亦選擇了IBM 5550作為其內碼標準。這些用5550內碼的文件,一旦下載到计算机上,若要轉寄與其他人使用,就要透過轉碼換成Big5,其他人才可以閱讀。 另一方面,在會計界有不少人都直接使用外國的專門軟體,而為免衝碼問題使畫面凌亂,不少的IT部門都把公司電腦的內碼換成倚天碼。本來會計人員過去只是把計算結果列印而提交報告,並未有任何問題。到後來隨着電子表格的興起,用戶才發覺到當公司與外界使用的內碼不同,會引起不少問題,乱码的问题才开始得到重视。 中文Big5碼被誤認為EASCII歐洲生產的某些電腦並無法辨識Big5雙位元字碼的中文字元,相反的,它們會把位於00到7F間的字碼視為ASCII,而80到FF間的字碼則視為EASCII,例如:
也因此,中文字串「維基百科中文大五碼」會顯示為亂碼「ºû°ò¦Ê¬ì¤¤¤å¤j¤ ½X」。 UTF-8与Big5的相互转换隨著UTF-8的普及化,許多繁體中文的IRC頻道也逐漸從Big5轉變成UTF-8;然而在這種過渡時期中,仍然有不少IRC頻道是採用Big5的,所以使用者參與了新的頻道時,通常會想要先確定自己的字元編碼有沒有設錯,人們最常用的測試字眼不外乎:
嚙踝蕭乱码问题当一段大五码文本被错误地以UTF-8解码再编码再以大五码解码,由于在被以UTF-8解码时的无效字符被以Unicode的“未识别字符(U+FFFD)”作为内码记录,而那替代字符的UTF-8编码的十六进制为“ 另外其他编码的非UTF-8文本或非文本二进制数据被错误地以UTF-8解码再编码再以大五码解码也会如上产生嚙踝蕭乱码,然而由于原字节序列的特征会部分地传递至以UTF-8解码后所产生的中间阶段乱码,这样因此由这些方式产生的乱码跟大五码文本被错误地以UTF-8解码再编码再以大五码解码所产生的乱码便具有不同的特征。 简体中文编码体系产生的乱码在中文互联网上流行着一个冷笑话,总结了简体中文编码中经常出现的乱码:[2][3]
锟斤拷乱码问题在Unicode编码与简体中文编码系统(例如GB 2312、GBK、GB 18030、CP936)转换时,部分简体中文编码的文字在Unicode编码中并不存在,Unicode会以“未识别字符(U+FFFD)”作为内码记录,而对外以UTF-8表现为 “烫烫烫”与“屯屯屯”在Visual C++中,以调试模式运行程序时,未初始化的栈空间被以0xCC填充,而未初始化的堆空间则是0xCD。当不小心以字符串形式输出了这些未初始化的内容时,系统会以GBK编码解析为一连串重复的“烫”(0xCCCC)或者“屯”(0xCDCD)。 UTF-8 BOM与“锘”Windows操作系统中,将文本文件保存为UTF-8格式时会在文件开头添加字节顺序标记 產生的問題過往,亂碼所產生的問題,往往只是閱讀上的不方便,因為文字變成了亂碼,使用戶看不到文字的內容。然而,現時由於電腦軟件保安設計的問題,亂碼隨時可能會使應用程式不正常關閉。 参见参考文献
|