亂碼問題收藏

0 篇文章 0 订阅

<!-- /* Font Definitions */ @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋体; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:新細明體; panose-1:2 2 3 0 0 0 0 0 0 0; mso-font-alt:PMingLiU; mso-font-charset:136; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 137232384 22 0 1048577 0;} @font-face {font-family:"Arial Unicode MS"; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:136; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1 -369098753 63 0 4129279 0;} @font-face {font-family:"/@新細明體"; panose-1:2 2 3 0 0 0 0 0 0 0; mso-font-charset:136; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 137232384 22 0 1048577 0;} @font-face {font-family:"/@SimSun"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@Arial Unicode MS"; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:136; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1 -369098753 63 0 4129279 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:none; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:新細明體; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

原来<form>在提交时使用的是GET,而未用POST,这当 然没什么了不起的,用什么都可以,但对编码就有问题了。自从Tomcat5.x开始,GETPOST方法提交的信息,Tomcat采用了不同的方式来处 理编码,对于POST请求,Tomcat会仍然使用request.setCharacterEncoding方法所设置的编码来处理,如果未设置,则使 用默认的iso-8859-1编码。而GET请求则不同,Tomcat对于GET请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会永远使用iso-8859-1编码,而这位朋友使用的正好是GET请求,因此,tomcat将会使用iso-8859-1将提交的字节转换成字符串。ITPUB个人空间j­Vt0Fr+V


| W-?.Q ~

Q_`LR#z­{n651376
解决的方法有两个: ITPUB 个人空间 pj p2@
r$E

1. 
GET 请求改成 POST 请求,然后就可以使用 request.setCharacterEncoding 方法设置编码,并使用 request.getParameter 方法直接获得中文请求参数了。
F?Wuz$/
y651376
2. 
不用改 GET 请求,在 Servlet 中使用如下的代码来得到中文请求参数。

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "GBK");

    综上所述,如果使用了GET请求,则setCharacterEncoding方法不起作用,只能使用上面的代码来解决,而使用POST请求,尽管setCharacterEncoding 方法起作用,但使用上面的代码仍然好使(在这时不能使用setCharacterEncoding方法将编码格式设置成非iso-8859-1格式)。因 此,如果想让Servlet可以同时处理GETPOST请求中的中文信息,除了判断这两种方法外,还可以使用上面的代码来同时处理这两种请求的中文信 息。ITPUB个人空间5Sn~#s)U,Z;/3k*B

O:zI?4I c4O#S@6513

$XI"sg(W


h65137 !oj:l S Q
[%{"|M651376

Servlet獲取Ajax Post 數據亂碼的一種解法

1. 对中文参数编码encodeURI(chinesePara);
  poststr = "username="+encodeURI("
中文");

2.服务器端获取参数后解码

String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF8");  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值