读书人

javaweb中文乱码有关问题

发布时间: 2013-10-21 17:03:30 作者: rapoo

javaweb中文乱码问题




二、浏览器与服务器传输数据乱码处理

?

1、浏览器端编码,一般由服务器端告诉浏览器如何解码数据:

?

1.1、Servlet

?

? ? response.setContentType("text/html; charset=UTF-8");

?

1.3、通用

?

? ? <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

?

1.4、Javascript传参乱码

?

在浏览器端对要传递的中文参数进行编码处理.代码如下:

?

B、在tomcat4之后,可以通过如下配置来解决中文乱码,但必须配置filter?
然后request.setCharacterEncoding(“UTF-8”)也可解决GET乱码

?

?

?

3、Java与数据库之间的乱码:
  大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如mysql驱动:

?

jdbc:mysql://localhost/MYAPPS?useUnicode=true&characterEncoding=GBK。

?

或者使用JAVA程序,修改编码,程序如下:

?

public class Convert {

?

??public static String ISOtoGB(String iso){
??String gb;
??try{
? ? if(iso.equals("") || iso == null){
? ?? ?return "";
? ? }
? ? else{
? ?? ?iso = iso.trim();
? ?? ?gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
? ?? ?return gb;
? ? }
??}
??catch(Exception e){
? ? System.err.print("编码转换错误:"+e.getMessage());
? ? return "";
? ? }
??}
}

?

?

?

?

?

4、Java与文件/流之间的乱码:
  Java读写文件最常用的类是FileInputStream / FileOutputStream和FileReader / FileWriter。其中FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建议使用基于字符的FileReader和FileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码。在这种情况下,建议使用FileReader和FileWriter的父类:InputStreamReader / OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。
参考文献:http://sishuok.com/forum/blogPost/list/306.html
http://blog.sina.com.cn/s/blog_5bd6b4510101277p.html

读书人网 >Web前端

热点推荐