最近在编写Java程序的时候,偶尔会遇到中文字乱码的问题,或者偏僻字不能正常显示的问题,经过查找资料并通过几次测试,目前已经完全解决。
首先需要说明一下我们经常用到的字符集,有ISO8859-1,GB2312,GBK,GB18030,UNICODE。这里ISO8859-1字符集只包含英文字符,使用一个字节存储。GB2312、GBK和GB18030字符集包含中文字符,他们都兼容ISO8859-1字符集,他们的字符存储格式是变长的,其中GB18030包含GBK,GBK包含GB2312。UNICODE包含世界上所有国家的字符,UNICODE又分为UTF-8,UTF-16和UTF-32三种,UTF-8是变长字符集,它兼容ISO8859-1,即英文字符使用一个字节编码,而其他的字符使用2到4个字节编码,其中中文字符大部分都是使用3个字节进行编码,少量偏僻字使用4个字节编码,UTF-16统一都使用2个字节编码,它不兼容ISO8859-1,英文字符也使用两个字节,UTF-32统一使用4个字节编码,也不兼容ISO8859-1,可见UTF-16和UTF-32都比较浪费空间。
乱码问题的产生最根本的原因就是使用错误的字符集解码字节流或者将给定的字符串用错误的字符集编码成错误字节流造成的,例如”中文”两个汉字,如果用ISO8859-1字符集将其编码为字节流,因为这个字符集不支持中文,所以就会出错,输出结果为3f3f,其意义就是??。再例如”中文”二字的GBK的字节流为d6 d0 ce c4,可是我们要是用不兼容的字符集去解码,例如用ISO8859-1或者UTF-8,这随后产生的字符串就是乱码,或者是其他的某个字符。
从开发Java程序到运行Java程序的过程中都存在着编码问题,所以要想避免乱码产生,就必须了解在其中任何时候的编码处理的情况。
源代码:在编写java源代码的时候,我们必须把编写的文本保存在文件中,这个时候不管用什么编辑器,都存在一个问题,就是以什么样的字符集将这些源代码(包含汉字)保存到文件中,大部分编辑器都会通过系统的环境变量得到系统的当前默认字符集,编辑器就会使用这个字符集将我们编写的源代码保存到文件中。一般我们的中文Windows系统的默认字符集是GB18030,AIX英文环境的默认字符集是ISO8859-1,AIX中文环境的默认字符集是IBM-eucCN。
首先需要说明一下我们经常用到的字符集,有ISO8859-1,GB2312,GBK,GB18030,UNICODE。这里ISO8859-1字符集只包含英文字符,使用一个字节存储。GB2312、GBK和GB18030字符集包含中文字符,他们都兼容ISO8859-1字符集,他们的字符存储格式是变长的,其中GB18030包含GBK,GBK包含GB2312。UNICODE包含世界上所有国家的字符,UNICODE又分为UTF-8,UTF-16和UTF-32三种,UTF-8是变长字符集,它兼容ISO8859-1,即英文字符使用一个字节编码,而其他的字符使用2到4个字节编码,其中中文字符大部分都是使用3个字节进行编码,少量偏僻字使用4个字节编码,UTF-16统一都使用2个字节编码,它不兼容ISO8859-1,英文字符也使用两个字节,UTF-32统一使用4个字节编码,也不兼容ISO8859-1,可见UTF-16和UTF-32都比较浪费空间。
乱码问题的产生最根本的原因就是使用错误的字符集解码字节流或者将给定的字符串用错误的字符集编码成错误字节流造成的,例如”中文”两个汉字,如果用ISO8859-1字符集将其编码为字节流,因为这个字符集不支持中文,所以就会出错,输出结果为3f3f,其意义就是??。再例如”中文”二字的GBK的字节流为d6 d0 ce c4,可是我们要是用不兼容的字符集去解码,例如用ISO8859-1或者UTF-8,这随后产生的字符串就是乱码,或者是其他的某个字符。
从开发Java程序到运行Java程序的过程中都存在着编码问题,所以要想避免乱码产生,就必须了解在其中任何时候的编码处理的情况。
源代码:在编写java源代码的时候,我们必须把编写的文本保存在文件中,这个时候不管用什么编辑器,都存在一个问题,就是以什么样的字符集将这些源代码(包含汉字)保存到文件中,大部分编辑器都会通过系统的环境变量得到系统的当前默认字符集,编辑器就会使用这个字符集将我们编写的源代码保存到文件中。一般我们的中文Windows系统的默认字符集是GB18030,AIX英文环境的默认字符集是ISO8859-1,AIX中文环境的默认字符集是IBM-eucCN。
Tags: 乱码
本文的主要的特点就是考虑到了两个平台:linux和windos;考虑了两个服务器:apache和resin。主要讲述了里面的配置方法和测试用例,并没有详细的讲述什么瘦身,什么其他安全配置等等。
本文的修改针对的是resin3.0和apache2.2;windows xp(本机)和redhat AS4(具有特定配置的修改)。具体的配置方法如下:
1、安装包选择
本次配置中使用了FCKeditor2.6和FCKeditor.java 2.3。可以在http://www.fckeditor.net/download下载得到。
2、初步配置
本文的修改针对的是resin3.0和apache2.2;windows xp(本机)和redhat AS4(具有特定配置的修改)。具体的配置方法如下:
1、安装包选择
本次配置中使用了FCKeditor2.6和FCKeditor.java 2.3。可以在http://www.fckeditor.net/download下载得到。
2、初步配置
1999年的时候我人生第一次站在了热气潮涌的天安门广场上。这已经是我第二次来北京了,却是第一次来到天安门广场,因为我第一次来北京的时候是1989年8月份,当时的天安门广场还在戒严当中。
天安门广场是世界上最大的广场,是1949年中共建国后的产物,是中共为了让中国人感到骄傲的同时可以有足够地方耀武扬威而建的,在建它的时候,中共从来都没有想过,这一片广阔之地,会在将来的某一天成为反对他的前沿阵地。
我大概是十四五岁的时候,已经忘了是在哪本书里第一次接触到了“八 - 九学chao”这个名词。当时我看到书里说,统治者为了镇压学生运动,竟然将坦克从人的身上压了过去。我当时想都没想,一拍大腿就大骂清政府混蛋加王八蛋,竟然如此残杀学生。因为说到镇压学生,共产党的历史上最著名的三个统治者就是清政府、北洋政府和国民党政府,而八九年,只能是一八八九年,那时是清政府执政。骂过后突然觉得不对,妈的,清朝哪有坦克呢?于是仍下了那本书——纵然清政府不是东西,但你诬蔑他也太无耻了吧?于是第一次了解八九学潮的机会就让我这样丢掉了。
大约是在上高中的时候,我又看到了一本书(其实我上大学以前不怎么看书,但很奇怪唯一看的几本都竟然都说到了八 - 九学chao),上面也说八九年统治者镇压学生运动,然而这次他不是写的八九,而写的是一九八九年。一九八九年,已经是伟大的Dang在执政了,怎么还会有镇压学生运动这种事情?因为毛伟人说过:“只有北洋政府才镇压学生运动!”再说了,我们如今生活的这么幸福,怎么可能还会有学生运动呢?我想都不想就认为这是境外反对势力的诬蔑。但是我虽然不信,还是很认真的看完了全文,我就是要看看它是怎么胡说的。