`
thtwin
  • 浏览: 165978 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

汉字编码问题

阅读更多
汉字编码问题。以下是我从网上搜索到的相关汉字编码问题的解决方案,希望能帮到你。1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者??
2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用

原因:
1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(“gbk”))不起作用。


解决办法:

首先所有的jsp文件都加上:
1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)

1)只要把%TOMCAT安装目录%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。
2)在你的web.xml里加入如下几行:


<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>

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


3)完成.

2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:

<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="GBK"
/>



2)重启tomcat,一切OK。

一、JSP页面显示乱码
下面的显示页面(display.jsp)就出现乱码:
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%
out.print("JSP的中文处理");
%>
</body>
</html>
对不同的WEB服务器和不同的JDK版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在JSP页面中指定编码方式(gb2312),即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。完整页面如下:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%
out.print("JSP的中文处理");
%>
</body>
</html>

二、表单提交中文时出现乱码
下面是一个提交页面(submit.jsp),代码如下:
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<form name="form1" method="post" action="process.jsp">
<div align="center">
<input type="text" name="name">
<input type="submit" name="Submit" value="Submit">
</div>
</form>
</body>
</html>
下面是处理页面(process.jsp)代码:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%=request.getParameter("name")%>
</body>
</html>
如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%
request.seCharacterEncoding("gb2312");
%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%=request.getParameter("name")%>
</body>
</html>

三、数据库连接出现乱码
只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。

四、数据库的显示乱码
在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:
public class Convert {
/** 把ISO-8859-1码转换成GB2312
*/
public static String ISOtoGB(String iso){
String gb;
try{
if(iso.equals("") || iso == null){
return "";
}
else{
iso = iso.trim();
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
return gb;
}
}
catch(Exception e){
System.err.print("编码转换错误:"+e.getMessage());
return "";
}
}
}
把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码
分享到:
评论

相关推荐

    汉字编码问题总结

    汉字编码问题总结 GB2312-80 编码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集--基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。GB2312 收录...

    汉字编码问题编码问题

    在处理文档时,如"汉字编码问题.doc",我们需要确保知道文档的原始编码,才能正确读取和保存内容,避免乱码。 总的来说,汉字编码问题涉及到字符集、编码规则以及编码转换等多个方面。深入理解这些概念,对于开发...

    JSP Servlet 中的汉字编码问题

    JSP Servlet 中的汉字编码各种问题解决方法

    java中汉字编码问题

    ### Java中汉字编码问题详解 在Java开发过程中,汉字编码问题常常给开发者带来困扰,特别是在涉及国际化或多语言环境的应用开发中。本文将详细介绍在Java环境中遇到的汉字编码问题及其解决方案,帮助开发者更好地...

    JSPServlet 中的汉字编码问题

    ### JSP Servlet 中的汉字编码问题详解 #### 一、问题背景 在计算机科学领域,尤其是在Web开发中,字符编码问题一直是开发者面临的一个常见难题。特别是在处理非英文字符时,如中文字符,很容易遇到编码不匹配导致...

    java应用中的汉字编码问题

    本资料将深入探讨Java中的汉字编码问题,帮助开发者理解并解决可能出现的乱码现象。 首先,我们需要理解编码的基本概念。编码是将字符转换为二进制表示的过程,而解码则是相反的过程。在Java中,最常用的字符编码...

    JSP-Servlet中的汉字编码问题-JSP教程

    ### JSP-Servlet中的汉字编码问题详解 #### 一、引言 在Web开发中,尤其是在使用JavaServer Pages (JSP) 和 Servlet 进行页面处理时,字符编码问题是经常遇到的技术难题之一。本文将围绕“JSP-Servlet中的汉字编码...

    JSP_Servlet 中的汉字编码问题.pdf

    ### JSP/Servlet中的汉字编码问题详解 #### 一、问题背景及重要性 在互联网技术的发展历程中,字符编码一直是影响多语言支持的关键因素之一。对于中文等双字节字符集(DBCS)而言,正确的编码处理尤为重要。《JSP_...

    汉字编码问题,GBK,Unicode

    ### 汉字编码问题详解:GBK与Unicode #### 一、GB2312-80 **GB2312**是中国最早制定的一种汉字信息交换编码标准,全称《信息交换用汉字编码字符集—基本集》。这项标准由中国国家标准总局发布,并于1981年5月1日...

    JSP与Servlet中的汉字编码问题.pdf

    JSP与Servlet中的汉字编码问题.pdf

    航信汉字编码与解码/eterm汉字编码与解码

    航信汉字的编码与解码,编码便于使自己的pid进行汉字传输, 航信汉字编码与解码,eterm汉字编码与解码,汉字编码问题

    JSP/Servlet 中的汉字编码问题

    JSP/Servlet 中的汉字编码问题 网上就 JSP/Servlet 中 DBCS 字符编码问题有许多优秀的文章和讨论,本文对它们作一些整理,并结合 IBM WebSphere Application Server 3.5(WAS)的解决方法作一些说明,希望它不是多余...

    汉字编码的问题

    首先,我们来了解一下汉字编码问题可能出现的场景: 1. **获取参数**:在如Tomcat这样的服务器上,`Request.getParameter()`默认编码是ISO8859-1。当接收到包含汉字的参数时,需要将参数转换为GB2312或其他合适的...

    汉字编码转换工具(汉字与utf-8转换 gb2312转换 unicode 转转

    总的来说,汉字编码转换工具是处理跨平台、跨系统汉字编码问题的利器,尤其在处理多源数据集成、文本处理、文件格式转换等场景下显得尤为重要。通过理解各种编码格式的特点和应用场景,我们可以更好地利用这款工具,...

    hanzibianma.rar_汉字 编码

    本文将深入探讨汉字编码的相关概念、常见编码方式以及如何在实践中应对汉字编码问题。 首先,我们要理解什么是字符编码。字符编码是一种规则,它将字符(如汉字)映射为特定的数字,使得计算机能够识别和处理这些...

    汉字编码简明对照表

    2. **兼容性**: 不同操作系统和应用程序之间的兼容性问题是汉字编码需要解决的关键问题之一。 3. **高效性**: 随着大数据时代的到来,如何提高汉字编码的存储和处理效率成为研究的重点。 4. **安全性**: 在网络安全...

    汉字编码—源码.zip

    汉字编码在计算机科学中扮演着至关重要的角色,尤其是在...这些源码示例可能是函数、方法或整个类,帮助开发者解决实际项目中遇到的汉字编码问题。通过分析和实践,可以加深对C#处理汉字编码能力的理解,提升编程技能。

    gb18030的汉字编码,Unicode汉字编码表

    汉字编码是计算机处理汉字的关键技术,它涉及到不同的字符集和编码标准。在IT行业中,理解和掌握汉字编码对于处理中文字符的存储、传输和显示至关重要。本文将深入探讨GB18030、GBK、Unicode这三种汉字编码以及它们...

Global site tag (gtag.js) - Google Analytics