乱码

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻

乱码指的是电脑系统不能显示正确的字符,而显示其他无意义的字符或空白,如一堆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. 红猴子. "烫烫烫屯屯屯" 那些事 . 知乎专栏