Javaweb编程中的乱码问题

Posted cooldream2009

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javaweb编程中的乱码问题相关的知识,希望对你有一定的参考价值。

 程序中的乱码问题,主要出现在我们处理中文数据的过程中出现。从浏览器向服务器请求数据,服务器返回的数据在浏览器中显示为乱码。或者是服务器中的java文件用到中文,也有可能会出现乱码。数据库在处理数据的时候,也会碰到乱码问题。

乱码问题总的来说,就是编码方式不同造成的,在数据的建立、传输、处理以及显示过程中,如果处理数据的编码方式不同,就会很容易造成中文的乱码问题。解决的办法宏观上说,就是在数据处理的各个环节都采用统一的编码方式,这样就可以避免乱码问题的发生。

对于JavaWeb编程来说,主要涉及到html、xml、数据库、java文件、java代码这几个部分。我们以“UTF-8”编码为例,说一些在不同文件中的设置或者代码的处理。

首先在html文件中,就是要告诉浏览器这个html文件编码方式是UTF-8。代码应该放在头文件head中,

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

这就表示这个文件里面的数据都是用UTF-8编码的,它里面的数据浏览器打开的时候就会按照UTF-8编码处理,如果这些数据发送的服务器,服务器也应该用UTF-8编码打开。

其次在xml中,一般xml文件的第一句就会设置编码方式。代码为:

<?xml version="1.0" encoding="UTF-8"?>

第三就是在数据库中,以mysql数据库为例,在建立数据库的时候,都会选择编码方式,这时就要选择UTF-8,继续建立表、字段的时候就可以默认编码方式,也就是和数据库保持一致,这样就能保证这个数据库中所有的数据都是UTF-8编码。

第四就是java文件,保证java文件的编码方式为UTF-8,一般是利用java编程工具的设置,比如myeclipse软件,就是通过windows---->Preferences,导航中找到general---->Workspace,右侧窗口Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8.点击“ok”保存。当然,还有一些其它的设置方法,这里只列出了其中的一种。对于其它的java编程工具,可以找对应的编码设置方法进行操作。

第五就是在java文件中的代码,特别是Javaweb编程的时候,从浏览器 取得数据,处理后返回给浏览器显示出来,这时候就需要做一些处理。比如我们开发工具是myeclipse,服务器用自带的tomcat,由于tomcat默认编码是ISO-8859-1,所以很容易造成乱码,处理过程是这样的。首先把从浏览器取到的字符串数据txt转换为二进制数据,然后在用UTF-8编码方式还原为字符串。代码为:

byte[] bytes=txt.getBytes("ISO-8859-1");

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

在把UTF-8编码的字符串utf8txt返回给浏览器之前,需要在java代码中再次指定编码方式。代码为:

resp.setContentType("text/html,charset=UTF-8");

resp.setCharacterEncoding("UTF-8");

然后再继续用html显示这个数据,代码为:

resp.getWriter().print("<html><head><meta http-equiv=‘Content-Type‘ content=‘text/html; charset=UTF-8‘/></head><body>");

resp.getWriter().print("<strong>"+utf8txt+"</strong>");

resp.getWriter().print("</body></html>");

这样就能够保证浏览器看到显示正常的数据。

对于javaweb编程中碰到的乱码问题一般这些都能够解决。如果在编程中碰到乱码问题,我们可以一步步的调试,找出乱码出现的位置,然后针对性的解决。在java文件中设置断点,看从浏览器拿到的数据是否正常,从数据库拿到的数据是否正常,从tomcat转换后的数据是否正常,一直到服务器返回给浏览器的数据是否正常这个思路来一步步分析,相信乱码问题就会很快查到,并找到解决方法。

以上分析是从如鹏网的杨中科老师解决乱码问题得到的启发,做了一个小小的总结,希望对碰到乱码问题的朋友们有所帮助。

以上是关于Javaweb编程中的乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

解决javaWeb请求协议中的乱码问题

javaweb表单提交中文乱码问题?

javaWeb乱码问题

java中文乱码解决之道—–javaWeb中的编码解码

JavaWeb篇——部署在Tomcat上的JavaWeb应用中文乱码问题

JavaWeb篇——部署在Tomcat上的JavaWeb应用中文乱码问题