java乱码乱谈

来源:互联网 发布:php新手做二次开发 编辑:程序博客网 时间:2024/04/30 06:18

  字符是我们在计算机屏幕上看到的记号,就如大家现在看到我写的这些东东,而字符在计算机内部的存放方式是

用编码方案决定的.

 什么是编码呢? 把字符转换成内存的二进制序列.不同的编码方案使用的二进制序列不同.如果编码和解码不一

致则会出现乱码,所以只要保证字符编码成字节序列和字节序列解码成字符所使用的编码方案一致,就不会出现乱码.

 下面假设操作系统默认编码为gbk.

 1.文件默认是以系统默认编码存放字符的,而IO类的Reader默认也是以系统默认编码解码字节序列,这时编码

和解码方案一致,所以无乱码.

  2.ResourceBundle读取properties文件是以ISO-8859-1解码方案来解码的,而properties文件是以系统默认

编码gbk来编码,导致了编码和解码不一致,所以会出现中文乱码.解决办法是把properties文件用工具把里面存放

的字符转成/uxxxx格式,而ISO-8859-1和gbk在对数字和字母所使用的编码字节序列是一样地,所以这时

ResourceBundle读取properties文件会原样输出,即/uxxxx形式,而我们在屏幕上看到的是/uxxxx所表示的字符.

 3.表单提交后显示乱码.页面的表单提交的字符串是以当前页面设置的编码方案编码成字节序列的.

如<META http-equiv=Content-Type content="text/html; charset=gbk">,这时字符以gbk编码成字节序列.

对于tomcat服务器 request.getParameter()显示的字符串默认是ISO-8859-1解码方案来解码的,导致了编码和解码不一致,所以会出现中文乱码.解决办法是通过设置request.setCharacterEncoding("gbk")使得解码和编码一致

原创粉丝点击