乱码

本页使用了标题或全文手工转换,现处于不转换模式
求闻百科,共笔求闻

乱码指的是电脑系统不能显示正确的字符,而显示其他无意义的字符或空白,如一堆ASCII代碼。这样所显示出来的文字统称为乱碼。[1]

乱码是因为“所使用的字符的源码在本地计算机上使用了错误的显示字库”,或在本地计算机的字库中找不到相应于源码所指代的字符所致。不同国家和地区的文字字库采用了相同的一段源码,或是源文件中因为文件受到破坏,致使计算机默认提取的源码错误,或是计算机没有安装相应字库,都有可能产生乱码。

例如,微软编译器产生“烫烫烫”“屯屯屯”乱码,编码字符集转换产生的“锟斤拷”“毺絞銝”“脣銝餌”乱码。[2]如果是台湾(BIG-5)会显示“昍昍昍”,日本(Shift-JIS)会显示“フフフフフフ”。

可能的产生原因

  • 一般是軟件程序解碼錯误。如浏览器把GBK碼当成是Big5碼显示,或电子邮件程序把对方传来的邮件錯误解碼。如果在发送时编碼錯误,收件者的电邮程序是不能解碼的,需要寄件者的电邮程序重新编碼再寄。
  • 字体档案(font file)不对。
  • 来源编碼錯误,或文件受到破坏。
  • 一种语言版本的操作系统安装了另外一种语言版本的应用程序,或者应用程序安装的补丁的语言版本与应用程序原来安装的语言版本不一致。
  • 早期单字节的应用程序在打开双字节语言的文件时不能正确识别文字的分割,在换行的地方把一个字从中分成两段,导致紧接在后面的整个一行全部都是乱码。
  • 低阶版本的应用程序不能识别高阶版本的程序创建的文件。

可能的解決方法

  • 转换编碼。一般可试Big5GBKUTF-8Unicode的一种应用方式,包括世界上主要的文字)三种,如涉及的不是中文,可以再试JIS日文)、KR韩文)及其他文字编碼。彻底的解決方法是双方使用同一编碼系统,如UTF-8,只要用户有对应的字体档案就可以正确的显示文字。实际上要统一编碼系统还要克服各种客观的困难,现时只有靠軟件(如Microsoft AppLocale)有更高的解碼能力。
  • 因繁简编碼不通用导致的乱碼,于系统的其他日期、时间与地区设定中,将非Unicode程式的使用语言更改为繁体/简体,或能解決。
  • 转换字体。如果解碼正确而出现錯误文字,有可能是字体档案中沒有相对应的字符,可嘗试转换字体档案。
  • 如果本来该显示出汉字的,卻变成数字,如最欣賞相中拉(最欣赏相中拉)等Unicode代碼,可以把这部分抄出来,独立存储成html档, 再用浏览器打开解碼。或可以直接使用JavaScript作解读︰
    alert("最欣賞相中拉");
    
  • 其他。有时解碼的方法要视乎軟件和实际环境,及不断嘗试才能解碼,特别在不知本来是用哪种编碼系统时。
  • 有时输入汉字时也会出现乱碼,不过这种情況很少出现。最大的原因是输入法所用的编碼,与经编辑器输出的字体编碼不符所致,可嘗试转换字体来解決。例如把GBK编碼的输入法裝到只支援Big5的系统上,是不能正确显示所输入的字的;必需选择Big5编碼的输入法,或把输入法裝到GBK的系统中。
  • 有关外文所引致的乱碼,只有转换支援某外文的字体档案才能解決。

参见

参考

  1. Schäfer, Ingo. Premodern Chinese Written Language, an Introduction. [永久失效連結]
  2. 红猴子. "烫烫烫屯屯屯" 那些事 . 知乎专栏