一种方法是把tomcat的server.xml文件
所有的<Connector>标签的URIEncoding属性进行设置,
如: <Connector port="8000" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
另一种方法是写过滤器
public class SetCharacterEncodingFilter implements Filter {
private static final String DEFAULT_ENCODING = "UTF-8";
protected String encoding;
protected FilterConfig filterConfig;
protected boolean ignore;
public SetCharacterEncodingFilter() {
encoding = null;
filterConfig = null;
ignore = true;
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
try {
if (ignore || request.getCharacterEncoding() == null)
if (encoding != null) {
request.setCharacterEncoding(encoding);
response.setContentType("text/html; charset=" + encoding);
} else {
request.setCharacterEncoding(DEFAULT_ENCODING);
response.setContentType("text/html; charset=" + DEFAULT_ENCODING);
}
} catch (Exception e) {
e.printStackTrace();
}
chain.doFilter(request, response);
}
public FilterConfig getFilterConfig() {
return filterConfig;
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
encoding = filterConfig.getInitParameter("CharacterEncoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
ignore = true;
else if (value.equalsIgnoreCase("true"))
ignore = true;
else if (value.equalsIgnoreCase("yes"))
ignore = true;
else
ignore = false;
}
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
}
web.xml配置如下:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class> com.xx.xx.xx.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>CharacterEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
最后附上:
System.out.println(URLDecoder.decode(queryString, "ISO-8859-1")+"URLDecoder.decode()转成ISO-8859-1");
System.out.println(URLDecoder.decode(queryString, "GBK")+"URLDecoder.decode()转成GBK");
System.out.println(URLDecoder.decode(queryString, "UTF-8")+"URLDecoder.decode()转成UTF-8");
System.out.println(new String(queryString.getBytes("ISO-8859-1"),"gbk")+"ISO-8859-1转成gbk");
System.out.println(new String(queryString.getBytes("ISO-8859-1"),"UTF-8")+"ISO-8859-1转成UTF-8");
System.out.println(new String(queryString.getBytes(),"utf-8")+"getBytes()直接转成UTF-8");
相关推荐
### JSP中汉字乱码现象分析与解决 #### 摘要 在JSP开发过程中,汉字乱码问题是一个常见的技术挑战,它不仅影响用户体验,还可能阻碍项目的顺利进行。本文详细探讨了JSP中汉字乱码现象的原因,并提供了一系列有效的...
使用这两种方法可以解决 JSP 中 request 乱码问题,确保用户输入的中文和汉字等双字节文字正确显示。 此外,在保存 java 和 jsp 文件时,也应该使用 UTF-8 编码,以避免乱码问题。 在整个应用程序中使用 UTF-8 ...
解决方法有两种: A. 使用上例中的第一种方式,对接受到的字符进行解码,再转码。 B. 在server.xml的Connector节点增加useBodyEncodingForURI="true"属性配置,以控制tomcat对get方式的汉字编码方式。 jsp中文...
针对JSP中文乱码问题,有几种有效的解决策略: **1. 在JSP文件中进行编码设置** 最直接的方法是在JSP文件头部声明正确的字符编码。例如,通过在JSP页面顶部添加`;charset=gb2312" %>`语句,可以确保页面以GB2312...
### jsp解决乱码问题 #### 一、背景与概念 在不同的国家和地区,人们制定了各种各样的ANSI编码标准,这些标准仅规定了适用于各自语言的“字符”及其存储方式。例如,GB2312是针对中文的编码标准,并未定义如何存储...
每种编码格式都有其特点和应用场景,了解这些编码格式可以帮助开发人员更好地解决乱码问题。 在Java中,编码问题可以从多方面入手。例如,在读取文件时,需要指定正确的编码格式,以避免乱码问题。在开发Java Web...
2. GB2312/GBK:这两种编码是中国国家标准,专门用于表示汉字。GB2312是简体中文的标准,GBK则扩展了GB2312,增加了对繁体字的支持。 3. Unicode:Unicode是一种统一的字符编码标准,每个字符由2字节表示,Java语言...
解决Ajax乱码问题的方法: - **方法一**:在服务器端对请求参数进行重新编码,例如在Java Servlet中,可以先将请求参数从ISO8859-1解码,再用目标编码(如GBK)重新编码。 ```java String string = request....
本文将详细探讨几种常见的乱码场景及其解决方案。 #### 一、JSP页面上的中文显示为乱码 **问题描述**:在JSP页面中直接输入中文时,页面上显示的是乱码。 **原因分析**:JSP页面被编译成Java文件的过程中,默认...
解决中文乱码的方法通常有以下几种: 1. 设置项目的字符编码:在Web项目的配置文件中,如web.xml中设置字符编码为UTF-8,确保整个项目的字符编码统一。 2. 设置请求和响应编码:在Servlet的doGet和doPost方法中,...
这里介绍两种转换方法。 **方法一:直接修改HTML文件** 1. 在HTML文件顶部添加JSP指令标签: ```jsp ; charset=GB18030" pageEncoding="GB18030"%> ``` 这行代码告诉服务器这是一个JSP页面,语言为Java,并...
### Java的中文乱码及部分解决方法 #### 引言 在Java开发过程中,中文乱码问题一直是开发者面临的一个挑战。这是因为Java内部采用Unicode编码,而操作系统、浏览器以及各种外部资源可能采用不同的编码格式(如GBK...
在开发过程中,文件编码的选择至关重要,主要分为ANSI和UTF-8两种: - **ANSI**:默认编码,实际表现为GB2312或GBK,适用于单一语言环境,但容易在国际化应用中产生乱码。 - **UTF-8**:推荐用于国际化项目,需手动...
- GET方式:GET请求参数的中文乱码可通过两种方式解决: - 修改Tomcat的server.xml配置文件,加入`URIEncoding="UTF-8"`来指定URL编码。 - 在代码中对GET请求参数进行编码转换处理,如使用`new String(request....
本文将深入探讨这些概念,并提供具体的代码示例来解释如何在实际开发中解决中文显示或乱码的问题。 ### 1. Unicode与Java中的字符编码 #### 1.1 Unicode编码基础 Unicode是一种国际字符编码标准,旨在支持所有...
首先,Struts2文件下载时的中文文件名乱码问题,可以通过以下两个步骤解决。在设置fileName属性时,先将其从ISO8859-1编码转换为UTF-8编码: ```java public void setFileName(String fileName) throws ...
本文将介绍两种有效的方法来解决这个问题。 方法一:设置JSP页面编码 这是最简单且常用的方法,主要是通过在JSP页面的顶部添加指令来设定页面的编码格式。有两种写法: 1. `...
- **汉字编码问题**:解决JSP和Servlet中的汉字乱码问题,确保中文字符的正确显示。 - **开发工具集成**:使用Eclipse等IDE与Tomcat集成开发Servlet,提高开发效率。 #### 八、数据库操作 - **JDBC概述**:Java ...
当`Request`对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。一种常见做法是先将获取的字符串用ISO-8859-1进行编码,再将其转换为字符串对象。例如: ```java String textContent = request....