中文亂碼

中文亂碼是電子資訊系統的中文無法正確顯示文字符號的一種現象，在中文內碼未有標準時情況尤其嚴重。

 “万码奔腾”的年代 

在過去，由於繁體中文缺乏個具號召力內碼標準，不同使用者都會使用各自標準。比較普遍的是銀行由於主要使用IBM的商業電腦，很自然地亦選擇了IBM 5550作為其內碼標準。這些用5550內碼的文件，一旦下載到计算机上，若要轉寄與其他人使用，就要透過轉碼換成Big5，其他人才可以閱讀。

另一方面，在會計界有不少人都直接使用外國的專門軟體，而為免衝碼問題使畫面凌亂，不少的IT部門都把公司電腦內碼換成倚天碼。本來會計人員過去只是把計算結果列印而提交報告，並未有任何問題。到後來隨着電子表格的興起，用戶才發覺到當公司與外界使用不同內碼，會引起不少問題，乱码问题才开始得到重视。

 繁体中文编码体系产生的乱码 

 中文Big5碼被誤認為ASCII 
歐洲生產的某些電腦並無法辨識Big5雙位元字碼的中文字元，相反的，它們會把位於00到7F間的字碼視為ASCII，而80到FF間的字碼則視為EASCII，例如：

中文字-{維}--{基}--{百}--{科}--{中}--{文}--{大}--{五}--{碼}-Big5碼的高位/低位位元BAFBB0F2A6CAACECA4A4A4E5A46AA4ADBD58對應的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解码再编码再以大五码解码所产生的乱码便具有不同的特征。

简体中文编码体系产生的乱码
在中文互联网上流行着一个冷笑话，总结了简体中文编码中经常出现的乱码：
手持两把-{锟斤拷}-，口中疾呼-{烫烫烫}-。

脚踏千朵屯屯屯，笑看万物-{锘锘锘}-。

 “-{锟斤拷}-”乱码问题 
在Unicode编码（主要为UTF-8）与简体中文编码系统（例如GB 2312、GBK、GB 18030、CP936）转换时，如果将中文编码（或其他非UTF-8编码）的字节串当作UTF-8解码，由于一个字符串在任何其它编码中表现为合法的UTF-8的可能性很低，这些不合法的编码在Unicode中会以“未识别字符（U+FFFD）”作为内码记录，再次以UTF-8编码时就会表现为EF BF BD。当多个EF BF BD连续出现，而且以简体中文编码去解释的话，就会被解析为多个“-{锟斤拷}-”。三个字的编码分别是-{锟}-（0xEFBF）、-{斤}-（0xBDEF）、-{拷}-（0xBFBD）。

 “-{烫烫烫}-”与“屯屯屯” 
在Visual C++中，以调试模式运行程序时，未初始化的栈空间被以0xCC填充，而未初始化的堆空间则是0xCD。当不小心以字符串形式输出了这些未初始化的内容时，系统会以GBK编码解析为一连串重复的“-{烫}-”（0xCCCC）或者“屯”（0xCDCD）。

此外，一些早期命令行界面程序会使用代码页437中的扩展字符来模拟窗口，字符“═”（0xCD）可以作为窗口的上下边界。但如果操作系统采用的是代码页936，则会将相邻的“═”识别为“屯”（0xCDCD），于是窗口上下边界就变成了一连串的“屯屯屯”。

 UTF-8 BOM与“-{锘锘锘}-” 
Windows操作系统中，将文本文件保存为UTF-8格式时会在文件开头添加字节顺序标记（BOM）EF BB BF，当文件以GBK编码打开时，开头两个字节会被解析为“-{锘}-”（0xEFBB）。

 產生的問題 

从前，亂碼所產生問題，往往只是不便閱讀，因為文字變成了亂碼，使用戶看不到文字的內容。然而，現時由於電腦軟件保安設計的問題，亂碼隨時可能會使應用程式不正常關閉。

 参见 
亂碼

 参考文献 

Category:中文信息处理