fbpx
维基百科

中文亂碼

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

“万码奔腾”的年代 编辑

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

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

中文Big5碼被誤認為EASCII 编辑

歐洲生產的某些電腦並無法辨識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解码再编码再以大五码解码所产生的乱码便具有不同的特征。

简体中文编码体系产生的乱码 编辑

在中文互联网上流行着一个冷笑话,总结了简体中文编码中经常出现的乱码:[1][2]

手持两把锟斤拷,口中疾呼烫烫烫。 脚踏千朵屯屯屯,笑看万物锘锘锘。

锟斤拷乱码问题 编辑

在Unicode编码与简体中文编码系统(例如GB 2312GBKGB 18030CP936)转换时,部分简体中文编码的文字在Unicode编码中并不存在,Unicode会以“未识别字符(U+FFFD)”作为内码记录,而对外以UTF-8表现为EF BF BD,当多个EF BF BD连续出现,而且以简体中文编码去解释的话,就会被解析为多个“锟斤拷”。三个字的编码分别是锟(0xEFBF)、斤(0xBDEF)、拷(0xBFBD)。

“烫烫烫”与“屯屯屯” 编辑

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

UTF-8 BOM与“锘” 编辑

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

產生的問題 编辑

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

参见 编辑

参考文献 编辑

  1. ^ 计算机领域有哪些经典的典故或笑话?. 知乎. 2014-03-08. 
  2. ^ 1 分钟带你认识从 "�" 到 "锟斤拷". 搜狐. 2021-02-16 [2023-11-14]. (原始内容于2023-11-14). 

中文亂碼, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目需要补充更多来源, 2023年11月14日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而被移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像, 以检查网络上是否存在该主题的更多可靠来源, 判定指引, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 2022年2月27日, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 是電子. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目需要补充更多来源 2023年11月14日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 中文亂碼 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 2022年2月27日 請按照校對指引 幫助编辑這個條目 幫助 討論 中文亂碼是電子資訊系統的中文無法正確顯示文字符號的一種現象 在中文內碼未有標準時情況尤其嚴重 目录 1 万码奔腾 的年代 2 中文Big5碼被誤認為EASCII 3 UTF 8与Big5的相互转换 3 1 嚙踝蕭乱码问题 4 简体中文编码体系产生的乱码 4 1 锟斤拷乱码问题 4 2 烫烫烫 与 屯屯屯 4 3 UTF 8 BOM与 锘 5 產生的問題 6 参见 7 参考文献 万码奔腾 的年代 编辑在過去 由於繁體中文使用者缺乏一個具有號召力的內碼標準 不同使用者都會使用各自的標準 比較普遍的是銀行由於主要使用IBM的商業電腦 很自然地亦選擇了IBM 5550作為其內碼標準 這些用5550內碼的文件 一旦下載到计算机上 若要轉寄與其他人使用 就要透過轉碼換成Big5 其他人才可以閱讀 另一方面 在會計界有不少人都直接使用外國的專門軟體 而為免衝碼問題使畫面凌亂 不少的IT部門都把公司電腦的內碼換成倚天碼 本來會計人員過去只是把計算結果列印而提交報告 並未有任何問題 到後來隨着電子表格的興起 用戶才發覺到當公司與外界使用的內碼不同 會引起不少問題 乱码的问题才开始得到重视 中文Big5碼被誤認為EASCII 编辑歐洲生產的某些電腦並無法辨識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字元 º u o E i a j X也因此 中文字串 維基百科中文大五碼 會顯示為亂碼 ºu o E i a 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解码再编码再以大五码解码所产生的乱码便具有不同的特征 简体中文编码体系产生的乱码 编辑在中文互联网上流行着一个冷笑话 总结了简体中文编码中经常出现的乱码 1 2 手持两把锟斤拷 口中疾呼烫烫烫 脚踏千朵屯屯屯 笑看万物锘锘锘 锟斤拷乱码问题 编辑 在Unicode编码与简体中文编码系统 例如GB 2312 GBK GB 18030 CP936 转换时 部分简体中文编码的文字在Unicode编码中并不存在 Unicode会以 未识别字符 U FFFD 作为内码记录 而对外以UTF 8表现为EF BF BD 当多个EF BF BD连续出现 而且以简体中文编码去解释的话 就会被解析为多个 锟斤拷 三个字的编码分别是锟 0xEFBF 斤 0xBDEF 拷 0xBFBD 烫烫烫 与 屯屯屯 编辑 在Visual C 中 以调试模式运行程序时 未初始化的栈空间被以0xCC填充 而未初始化的堆空间则是0xCD 当不小心以字符串形式输出了这些未初始化的内容时 系统会以GBK编码解析为一连串重复的 烫 0xCCCC 或者 屯 0xCDCD UTF 8 BOM与 锘 编辑 Windows操作系统中 将文本文件保存为UTF 8格式时会在文件开头添加字节顺序标记EF BB BF 当文件以GBK编码打开时 开头两个字节会被解析为 锘 0xEFBB 產生的問題 编辑過往 亂碼所產生的問題 往往只是閱讀上的不方便 因為文字變成了亂碼 使用戶看不到文字的內容 然而 現時由於電腦軟件保安設計的問題 亂碼隨時可能會使應用程式不正常關閉 参见 编辑亂碼参考文献 编辑 计算机领域有哪些经典的典故或笑话 知乎 2014 03 08 1 分钟带你认识从 到 锟斤拷 搜狐 2021 02 16 2023 11 14 原始内容存档于2023 11 14 取自 https zh wikipedia org w index php title 中文亂碼 amp oldid 79851260, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。