超链接传值中文乱码解决方案.docx_第1页
超链接传值中文乱码解决方案.docx_第2页
超链接传值中文乱码解决方案.docx_第3页
超链接传值中文乱码解决方案.docx_第4页
超链接传值中文乱码解决方案.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在web开发中,中文乱码问题,我们经常碰到,尤其是超链接和jquery传输中文到后台的action或者servlet,中文就会变成乱码,影响程序的正常执行。 这里给出一个解决方法,个人觉得不错,分享一下: 1、首先创建一个java类,这里给出它的代码,作用是将中文与英文加字符串的转换: package .util;/* * JavaScript escape/unescape 编码的 Java 实现 * author jackyz * keep this copyright info while using this method by free */ public class Escape private final static String 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 ; private final static byte 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 ; public static String escape(String s) StringBuffer sbuf = new StringBuffer(); int len = s.length(); for (int i = 0; i len; i+) int ch = s.charAt(i); if (ch = ) / space : map to + sbuf.append(+); else if (A = ch & ch = Z) / A.Z : as it was sbuf.append(char)ch); else if (a = ch & ch = z) / a.z : as it was sbuf.append(char)ch); else if (0 = ch & ch = 9) / 0.9 : as it was sbuf.append(char)ch); else if (ch = - | ch = _ / unreserved : as it was | ch = . | ch = ! | ch = | ch = * | ch = / | ch = ( | ch = ) sbuf.append(char)ch); else if (ch 8); sbuf.append(hex(0x00FF & ch); return sbuf.toString(); public static String unescape(String s) StringBuffer sbuf = new StringBuffer(); int i = 0; int len = s.length(); while (i len) int ch = s.charAt(i); if (ch = +) / + : map to sbuf.append( ); else if (A = ch & ch = Z) / A.Z : as it was sbuf.append(char)ch); else if (a = ch & ch = z) / a.z : as it was sbuf.append(char)ch); else if (0 = ch & ch = 9) / 0.9 : as it was sbuf.append(char)ch); else if (ch = - | ch = _ / unreserved : as it was | ch = . | ch = ! | ch = | ch = * | ch = / | ch = ( | ch = ) sbuf.append(char)ch); else if (ch = %) int cint = 0; if (u != s.charAt(i+1) / %XX : map to ascii(XX) cint = (cint 4) | vals.charAt(i+1); cint = (cint 4) | vals.charAt(i+2); i+=2; else / %uXXXX : map to unicode(XXXX) cint = (cint 4) | vals.charAt(i+2); cint = (cint 4) | vals.charAt(i+3); cint = (cint 4) | vals.charAt(i+4); cint = (cint 4) | vals.charAt(i+5); i+=5; sbuf.append(char)cint); i+; return sbuf.toString(); 2、在jsp中引入Escape.java文件:代码如下: 在js或jquery中声明并运用中文转换Escape类,代码如下:script type=text/javascript src=testJs/jquery-1.4.3.min.js function init() alert(start js ajax); var url=/chinese; var para1=中文测试1; var para2=测试中文2; var args=data1:escape(para1),data2:para2; $.post(url,args,function(data) if(data) alert(123); ); 3、调用init() js方法,代码如下:4、创建jquery中调用的servlet类chinese,其在web.xml中的配置如下: chinese .servlet.chinese chinese /chinese 5、完成chinese.java的servlet类,代码如下:package .servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import .util.Escape;public class chinese extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(text/html);PrintWriter out = response.getWriter();/request.setCharacterEncoding(utf-8);/response.setCharacterEncoding(utf-8);Escape escape=new Escape();System.out.println(request.getParameter(data1);SuppressWarnings(static-access)String da1=escape.unescape(request.getParameter(data1);String da2=request.getParameter(data2);System.out.println(转换数据:+da1+t未转化:+da2);out.flush();out.close();public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException this.doGet(request, response);6、为了方便转换测试,请不要在servlet里边进行字符集配置,上边方便验证特意注释掉了字符集编码。7、启动项目测试,结果如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论