java web开发中文乱码解决方法详解
2013-05-05 18:40
381 查看
在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);
问题解决了,哈哈哈...
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);
问题解决了,哈哈哈...
相关文章推荐
- java web开发中文乱码解决方法详解
- 基于tomcat的spring开发中文乱码解决方法。
- 详解Linux中文乱码问题终极解决方法
- 解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题
- Notepad++开发JavaScript运行时中文出现乱码的解决方法
- PHP 页面编码声明方法详解(header或meta,解决中文乱码问题)
- android开发时,http提交地址中有中文乱码的解决方法
- Java Web项目中解决中文乱码方法总结
- 最近在搞fmx开发,用idhttp post 数据 返回中文乱码,在网上找了好多都解决不了,后来自己琢磨出方法,非常简单 uses IdGlobal lstr := idhttp1.Pos
- 解决Java Web项目中文乱码的方法
- 在web开发中出现的一些中文乱码问题解决方法
- java web中解决中文乱码方法大全!一切都OK!
- Java开发中文乱码的几种解决方法
- 解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题
- ASP.NET开发在JavaScript有中文汉字时出现乱码时简单有效的解决方法
- Ubuntu系统中evince打开中文PDF乱码的解决方法详解
- PHP 页面编码声明方法详解(header或meta,解决中文乱码问题)
- Java Web项目中解决中文乱码方法总结
- ASP.NET Core2.0 使用VSCode 版本1.13.1工具 开发控制台运行出现中文乱码问题及解决方法
- JpGraph使用详解之中文乱码解决方法