`

解决Java web开发中的中文问题

阅读更多

说明:转载于:http://www.blogjava.net/rickhunter/articles/33571.html

 

这段时间经常看到有人问到web开发中怎么中文总是?号。原因其实很简单,因为大家大多用的是tomcat服务器,而tomcat服务器的默认编码为 iso-8859-1(西欧字符)。就是因为iso-8859-1(西欧字符)编码造成了我们经常看到?号。关于iso-8859-1(西欧字符)更多知识请看《字节,字符和编码这篇文章。

方法一:最简单也是用的最多的方法。
<%@ page language="java" pageEncoding="GBK" %>
或者<%@ page contenttype="text/html;charset=gbk";>这里可以用gb2312或者gbk,只是gbk比gb2312支持跟多的字符。

这个方法用于jsp页面中的中文显示。

方法二:使用过滤器。
过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1编码。
编写一个SetCharacterEncodingFilter类。
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;

public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
String value=filterConfig.getInitParameter("ignore");
if(value==null)
this.ignore=true;
else if(value.equalsIgnoreCase("true"))
this.ignore=true;
else
this.ignore=false;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO 自动生成方法存根
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}

public void destroy() {
// TODO 自动生成方法存根
this.encoding = null;
this.filterConfig = null;
}

protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}

然后再web.xml加上
<!-- Set Character Encoding-->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.struts.common.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Set Character Encoding-->

使用过滤器的好处很多,特别是项目之中。
而且在使用国际化时就更有用了,只要在页面指定<%@ page language="java" pageEncoding="UTF-8" %>,服务器就会根据本地Locale来显示正确的字符集。

所以我特别推荐使用过滤器。

方法三:修改tomcat的server.xml文件中URIEncoding。
<Connector
debug="0"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
port="80"
redirectPort="8443"
enableLookups="false"
minSpareThreads="25"
maxSpareThreads="75"
maxThreads="150"
maxPostSize="0"
URIEncoding="GBK"
>
</Connector>
这个方法主要针对从url中获取字符串的问题
在tomcat5.0及以上版本,post和get方法在处理编码时有所不同。如果你在url中获取中文就会出现?号。但在tomcat4.1版本没有问题,因为tomcat4.1的post和get方法在处理编码时是一样的。

分享到:
评论

相关推荐

    java 中文问题(java web 开发中的中文问题)

    Java 中文问题是 Java web 开发中常见的一种问题,解决该问题需要了解 Java 中文编码、字符集和过滤器的使用。本文将总结 Java 中文问题的解决方法,并提供实践经验和代码示例。 一、支持中文 在 Java 中,支持...

    Java Web开发常见问题.pdf

    ### Java Web开发中常见的中文乱码问题解析 在Java Web开发过程中,中文乱码问题是开发者经常遇到的一个挑战。这些问题主要源于Java默认的...通过这些措施,可以有效地预防和解决Java Web开发中常见的中文乱码问题。

    Java WEB开发中的中文乱码问题解决方法.pdf

    在Java Web开发中,中文乱码问题一直是开发人员面临的常见问题之一。中文乱码通常是由于在字符编码转换过程中,字符集不一致或设置不当所导致。为了解决这一问题,首先需要了解Java Web工程字符编码的基本理论,包括...

    java web开发解决乱码问题

    通过上述方法,我们可以有效地解决Java Web开发中的乱码问题。需要注意的是,在实际开发中还需要根据具体情况进行调整,确保字符编码的一致性。此外,对于框架如Struts2等,也需要了解其特定的解决方案。希望本文能...

    Java Web开发中文乱码问题的研究与解决.pdf

    总之,Java Web开发中的中文乱码问题需要从多个层面进行检查和调整,确保数据在整个处理链路中的编码一致性,才能有效地避免和解决乱码问题。这需要开发者具备扎实的字符编码知识,并在实践中积累经验,以便在遇到...

    解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题.pdf

    解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题.pdf

    Java Web开发中的中文乱码问题分析及解决方案.pdf

    Java Web开发中的中文乱码问题是一个常见的困扰,尤其是在处理用户输入和数据显示时。问题的核心在于不同组件和环境之间编码方式的不一致。本文将深入探讨Java Web的编码机制,JSP运行原理,以及如何解决常见的乱码...

    Java Web程序开发中字符乱码的原因与解决办法.pdf

    Java Web程序开发中字符乱码的原因与解决办法 字符乱码问题是Java Web程序开发过程中经常遇到的一个问题,它会对用户界面的友好性以及信息的准确传达造成很大的影响。为了解决这个问题,我们首先要了解字符集和字符...

    解决web开发中的中文问题.doc

    ### 解决Web开发中的中文问题 在Web开发过程中,中文乱码问题是非常常见的一个问题,尤其对于使用Tomcat服务器的应用程序来说。本篇文章将详细介绍导致这一问题的原因以及如何解决这一问题。 #### 一、问题背景与...

    Java Web开发中中文乱码问题的分析与解决方法 (1).pdf

    从介绍java常用字符编码集入手,详细分析了在java Web开发中产生中文乱码的原因,并针对原因提出了可行性解决方法。

    Java web开发进阶

    - **定义**: Java Web开发中常用的开发工具。 - **内容要点**: - MyEclipse集成开发环境的使用 - SVN版本控制系统的操作 - Firefox浏览器及其Firebug插件的调试功能 - Tomcat服务器的配置与部署 - **学习资源**:...

    关于Java+Web技术开发中中文乱码问题的深入探讨.pdf

    中文乱码问题是 Java Web 技术开发中一个常见的问题,但通过配置 Tomcat 的编码方式、在 Java 代码中指定编码方式、使用 Unicode 字符等方法,可以解决这个问题。同时,统一编码方式、使用字符编码检测工具、学习 ...

    Java Web开发中的乱码问题分析及解决方案研究 (1).pdf

    【Java Web开发中的乱码问题】在开发Java Web应用程序时,...通过理解各种编码方式,分析乱码产生的原因,并结合实际情况采取相应的解决策略,可以有效地解决Java Web开发中的中文乱码问题,提高应用程序的用户体验。

    《Java Web开发与实战--Eclipse+Tomcat+Servlet+JSP整合应用》.(刘伟,张利国).[PDF].zip

    全面讲解了java web编程所需的核心技术,并涵盖一些高级技术主题。主要内容包括web应用程序运行原理、...另外,书中提供了大量的实例代码,读者可以自由取用,这些代码功能强大,适合解决java web开发中的实际问题。

    关于Java Web中中文乱码问题的探讨.pdf

    本文针对Java Web开发中字符编码问题进行探讨,主要围绕字符编码的种类、设置方式以及不同页面类型的代码编写差异,分析中文乱码的成因,并提出解决方案,旨在为初学者提供解决中文乱码问题的思路。 首先,计算机...

    java学习笔记,JavaWeb开发中常见问题总结

    2. **Web开发工具和资源**: - **API查询网站**:如gotapi.com提供HTML、CSS、XPath等API查询,帮助开发者快速查找和理解相关API。 - **在线学习平台**:w3schools.com提供XML、HTML、XSL等标准的在线教程,适合...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    java web开发中服务器推送pushlet.jar解决中文乱码

    java web开发中服务器推送pushlet.jar解决中文乱码

    java web开发基础

    Java Web开发基础是构建Web应用...以上就是Java Web开发基础中的核心知识点,每个部分都值得深入研究和实践,以成为一名熟练的Java Web开发者。通过不断学习和实践,可以掌握构建高效、健壮的Web应用程序所需的技能。

Global site tag (gtag.js) - Google Analytics