java中字符串乱码问题解决方案

在java程序开发中经常会遇到字符串乱码,下面提供的三种方法,基本能解决常见的乱码问题。

1.乱码原因

乱码问题的产生,最根本的原因就是使用错误的字符集解码字节流或者将给定的字符串用错误的字符集编码成错误字节流造成的。例如”中文”两个汉字,如果用 ISO8859-1字符集将其编码为字节流,因为这个字符集不支持中文,所以就会出错,输出结果为3f3f,其意义就是??。再例如”中文”二字的GBK 的字节流为d6 d0 ce c4,可是我们要是用不兼容的字符集去解码,例如用ISO8859-1或者UTF-8,这随后产生的字符串就是乱码,或者是其他的某个字符。

从开发Java程序到运行Java程序的过程中都存在着编码问题,所以要想避免乱码产生,就必须了解在其中任何时候的编码处理的情况。


2.存储到MySQL字符串乱码

先改变该字段的编码方式,一般设置为“UTF-8”;如果不行,将整个表的编码设置成“UTF-8”;仍然不起作用的话,重装MySQL,在装的过程中,对于“MySQL Server Instance Configuration”要选“Best Support For Multilingualism”,这样就可以解决字符串在数据库乱码的问题。其他数据库可以参考此过程进行处理。


3.输出字符串乱码

在输出的过程中将字符串转码成和原字符串相同的编码

byte[] bytes={};

String str=new String(bytes,"UTF-8");


4.读取文件字符串乱码

在读取过程中直接将字节流转码

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));

你可能感兴趣的:(java中字符串乱码问题解决方案)