分享
 
 
 

Java 中文问题的解决 mysql, oracle, servlet, jsp

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在tomcat5中发现了以前处理tomcat4的方法不能适用于处理直接通过url提交的请求,上网找资料终于发现了最完美的解决办法,不用每个地方都转换了,而且无论get,和post都正常。写了个文档,贴出来希望跟我有同样问题的人不再像我一样痛苦一次:-)

上传文件有问题,只好直接贴了,难看点:-)

-------------------

Tomcat 5中文问题

author:kiss__sky@163.com

-------------------

问题描述:

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页页测试是否成功

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.util.*"%>

<%

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

q = q == null? "没有值" : q;

%>

<HTML>

<HEAD><TITLE>新闻列表显示</TITLE>

<META http-equiv=Content-Type content="text/html; charset=gb2312">

<META http-equiv=pragma content=no-cache>

<body>

你提交了:

<%=q%>

<br>

<form action="tcnchar.jsp" method="post">

输入中文:<input type="text" name="q"><input type="submit" value="确定">

<br>

<a href="tcnchar.jsp?q=中国">通过get方式提交</a>

</form>

</BODY></HTML>

测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!

特别感谢下面这篇帖子,帮我解决了中文问题.最后祝大家好运!!!

参考网址:

http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0

Java 中文问题一直困扰许多学习者。总结了下面的一些情况的解决方法。

希望对大家有帮助。

连接 Mysql Database Server:

-------------------------------------------------------------------------------

mysql 不支持 unicode,所以比较麻烦。

将 connectionString 设置成 encoding 为 gb2312

String connectionString

= "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312";

测试代码:

String str = "汉字";

PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test VALUES (?)");

pStmt.setString(1,str);

pStmt.executeUpdate();

数据库表格:

create table test (

name char(10)

)

连接 Oracle Database Server

-------------------------------------------------------------------------------

在把汉字字符串插入数据库前做如下转换操作:

String(str.getBytes("ISO8859_1"),"gb2312")

测试代码:

String str = "汉字";

PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test VALUES (?)");

pStmt.setString(1,new String(str.getBytes("ISO8859_1"),"gb2312");

pStmt.executeUpdate();

Servlet

-------------------------------------------------------------------------------

在 Servlet 开头加上两句话:

response.setContentType("text/html;charset=UTF-8");

request.setCharacterEncoding("UTF-8");

JSP

-------------------------------------------------------------------------------

在 JSP 开头加上:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有