您的位置:首页 > 编程语言 > Java开发

java web 开发中中文乱码问题解决

2014-04-17 15:41 204 查看
在java web 开发中经常遇到中文乱码问题,下面我就来为大家将这些解决方法进行汇总:

1,在eclipse中,默认的JSP编码格式为ISO-8859-1,但是此格式不支持中文,一般我们编程使用UTF-8格式,更改eclipse的编码格式方式如下:

window->preferences->General->Content Types->Text->JSP

2,当JSP页面不能保存时,page指令上增加pageEncoding="UTF-8"指明JSP采用UTF-8,这样就可以保存了。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

3,<%@ page language="java" import="java.util.*"contentType="text/html;charset=UTF-8"%>

向page指令中添加了页面内容和显示方式的设置,告诉浏览器用UTF-8的方式来显示此页面。

4,对于以POST方式提交给Tomcat服务器的表单默认编码为ISO-8859-1,用字符串的转换格式编码的方法来解决。

如:

String username=request.getParameter("username");

System.out.println(new String(username.getBytes("IS0-8859-1"),"UTF-8"));

5,由于第四种方式不是很方便,可以使用过滤器filter的形式来进行设置,以POST方式提交的表单本质上是封装在request对象中的,而request对象

是必须经过过滤器处理的,所以对于表单的中文问题,可以在filter中对所有的表单请求进行编码格式的处理。Filter从本质上讲就是一个servlet.

如:

request.setCharacterEncoding("utf-8");

chain.doFilter(request, response);

在web.xml中配置:

<filter-mapping>

<filter-name>EncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

6,当用URL传递参数时,需要对Tomcat服务器的配置文件进行修改才可以解决。修改server.xml配置文件.

以get方式提交的表单也是如此修改

在port="8080"后加上URLEncoding="gb2312"

7,数据库中操作中文乱码问题:

a,修改URL:DBURL = "jdbc:jtds:sqlserver://localhost:1433/bank?characterEncoding=UTF-8";

但是只能保证我们写入数据库是的数据时UTF-8编码.不能保证读出的数据也是此编码。

所以只有在读取数据库的时候进行转码。

写成一个转码函数:

public String encoder(String str) throws UnSupportedEncodingException{

String result=new String(str.getBytes("ISO-8859-1"),"gb2312");

return result;

}

response.setContentType("text/html");设置服务器响应的内容格式为HTML文档格式。

response.setCharacterEncoding("UTF-8");设置服务器响应内容的字符编码格式为UTF-8。

8,

如果以上方法是在不行了,只用这样了用JS来控制,在表单提交时,JSP页面:

<script type="text/javascript">

function f(){

var ipt1 = document.getElementById("ipt1");

var parameter1 = document.getElementById("ipt1").value;

var parameter = document.getElementById("ipt");

parameter.value = encodeURIComponent(parameter1);

return true;

}

</script>

<form id="form1" method="get" action="servlet/Parameter" onsubmit="return f()">

<table width="200" border="1">

<tr>

<td><input name="parameter1" type="text" id="ipt1" />

<input name="parameter" type="text" id="ipt" style="display: none">

</td>

</tr>

</table>

</form>

servlet中:

String parameter1 = URLDecoder.decode(req.getParameter("parameter"),"UTF-8");

resp.getWriter().print(parameter1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: