超链接传值中文乱码解决方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

在web开发中,中文乱码问题,我们经常碰到,尤其是超链接和jquery传输中文到后台的action或者servlet,中文就会变成乱码,影响程序的正常执行。这里给出一个解决方法,个人觉得不错,分享一下:1、首先创建一个java类,这里给出它的代码,作用是将中文与英文加字符串的转换:packagecom.cn.util;/***JavaScriptescape/unescape编码的Java实现*authorjackyz*keepthiscopyrightinfowhileusingthismethodbyfree*/publicclassEscape{privatefinalstaticString[]hex={00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20,21,22,23,24,25,26,27,28,29,2A,2B,2C,2D,2E,2F,30,31,32,33,34,35,36,37,38,39,3A,3B,3C,3D,3E,3F,40,41,42,43,44,45,46,47,48,49,4A,4B,4C,4D,4E,4F,50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D,5E,5F,60,61,62,63,64,65,66,67,68,69,6A,6B,6C,6D,6E,6F,70,71,72,73,74,75,76,77,78,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8F,90,91,92,93,94,95,96,97,98,99,9A,9B,9C,9D,9E,9F,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,BA,BB,BC,BD,BE,BF,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,CA,CB,CC,CD,CE,CF,D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,DA,DB,DC,DD,DE,DF,E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,EA,EB,EC,ED,EE,EF,F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,FA,FB,FC,FD,FE,FF};privatefinalstaticbyte[]val={0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F};publicstaticStringescape(Strings){StringBuffersbuf=newStringBuffer();intlen=s.length();for(inti=0;ilen;i++){intch=s.charAt(i);if(ch==''){//space:mapto'+'sbuf.append('+');}elseif('A'=ch&&ch='Z'){//'A'..'Z':asitwassbuf.append((char)ch);}elseif('a'=ch&&ch='z'){//'a'..'z':asitwassbuf.append((char)ch);}elseif('0'=ch&&ch='9'){//'0'..'9':asitwassbuf.append((char)ch);}elseif(ch=='-'||ch=='_'//unreserved:asitwas||ch=='.'||ch=='!'||ch=='~'||ch=='*'||ch=='/'||ch=='('||ch==')'){sbuf.append((char)ch);}elseif(ch=0x007F){//otherASCII:mapto%XXsbuf.append('%');sbuf.append(hex[ch]);}else{//unicode:mapto%uXXXXsbuf.append('%');sbuf.append('u');sbuf.append(hex[(ch8)]);sbuf.append(hex[(0x00FF&ch)]);}}returnsbuf.toString();}publicstaticStringunescape(Strings){StringBuffersbuf=newStringBuffer();inti=0;intlen=s.length();while(ilen){intch=s.charAt(i);if(ch=='+'){//+:mapto''sbuf.append('');}elseif('A'=ch&&ch='Z'){//'A'..'Z':asitwassbuf.append((char)ch);}elseif('a'=ch&&ch='z'){//'a'..'z':asitwassbuf.append((char)ch);}elseif('0'=ch&&ch='9'){//'0'..'9':asitwassbuf.append((char)ch);}elseif(ch=='-'||ch=='_'//unreserved:asitwas||ch=='.'||ch=='!'||ch=='~'||ch=='*'||ch=='/'||ch=='('||ch==')'){sbuf.append((char)ch);}elseif(ch=='%'){intcint=0;if('u'!=s.charAt(i+1)){//%XX:maptoascii(XX)cint=(cint4)|val[s.charAt(i+1)];cint=(cint4)|val[s.charAt(i+2)];i+=2;}else{//%uXXXX:maptounicode(XXXX)cint=(cint4)|val[s.charAt(i+2)];cint=(cint4)|val[s.charAt(i+3)];cint=(cint4)|val[s.charAt(i+4)];cint=(cint4)|val[s.charAt(i+5)];i+=5;}sbuf.append((char)cint);}i++;}returnsbuf.toString();}2、在jsp中引入Escape.java文件:代码如下:%@pagelanguage=javaimport=java.util.*,com.cn.util.*pageEncoding=utf-8%在js或jquery中声明并运用中文转换Escape类,代码如下:scripttype=text/javascriptsrc=%=basePath%testJs/jquery-1.4.3.min.js/scriptscripttype=text/javascriptfunctioninit(){alert('startjsajax');varurl='%=basePath%/chinese';%Escapeescape=newEscape();%varpara1='中文测试1';varpara2='测试中文2';varargs={data1:escape(para1),data2:para2};$.post(url,args,function(data){if(data){alert(123);}});}/script3、调用init()js方法,代码如下:bodyonload=init();4、创建jquery中调用的servlet类chinese,其在web.xml中的配置如下:servletservlet-namechinese/servlet-nameservlet-classcom.cn.servlet.chinese/servlet-class/servletservlet-mappingservlet-namechinese/servlet-nameurl-pattern/chinese/url-pattern/servlet-mapping5、完成chinese.java的servlet类,代码如下:packagecom.cn.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.ht

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功