假设
keyWord ='阳光';

url="play.jsp? keyWord ="+ keyWord

若按照上述的地址直接访问,则中文会变成乱码。必须使用encodeURI()进行两次编码。如下:

url="play.jsp? keyWord ="+encodeURI(encodeURI( keyWord ));

服务器通过以下方式获取值:

keyWord =URLDecoder.decode( keyWord ,"utf-8");

则中文乱码问题解决。

如果是通过servlet的二次转码还要在servlet中进行解码和再次编码

//中文解码

keyWord =URLDecoder.decode( keyWord ,"utf-8");

//中文编码
   keyWord =URLEncoder.encode(keyWord , "utf-8");

首先如果不编码,那些非英文abc等字符会被浏览器按照网页当前的字符集进行编码传到服务器去, 而服务器则只会按照服务器配置的字符集编码(有默认的好像就是ISOxxxx)进行解码,所以如果网页的字符集和服务器字符集解码一致那么就不会出乱码!

但是往往对于我们来说是不一致的。所以一般情况会出现乱码, 所以就有人想到用encodeUri来进行编码再发送到服务器,但是要注意encodeUri来编码是以utf-8来进行编码的,而服务器对于url里面的非abc等字符进行解码几乎默认都不是utf-8

以如果你encodeUri一次的话,
通过request.getParam...而得来的是被服务器以另外一种(一般是ISO...)编码解码得到的.所以通过utf-8编码过后
再通过ISO解码当然获得的是乱码, 即使你通过decode(xxx, 'utf-8')获取之后的也不对,因为这个过程是 utf-8编码 ----
iso解码 ----- utf-8解码,这个过程当然不对了哦!

而通过两次编码再通过两次解码为什么就对了呢, 她是这么一个过程 utf-8编码-utf-8编码 --- ISO解码 ----utf-8解码。

在这里要注意 因为通过第一次utf-8编码之后的都全是英文字符了,对于英文字符 utf-8编码 和ISO编码是一样的效果
所以上面的过程就相当于 utf-8编码-ISO编码 --- ISO解码 ----utf-8解码 这样一个过程是对称的当然最后会得到正确的结果了

关于中文乱码的解决方法(URL方式)的更多相关文章

  1. php 使用phpmailer 发送邮件(附带中文乱码的解决方法)

    下载phpmailer ,在程序里包含class.phpmailer.php 类  ,这里有中文乱码的解决方法 实例代码如下 <html> <head> <title&g ...

  2. xShell终端中文乱码完全解决方法

    xShell终端中文乱码完全解决方法 xShell(xShell5)以及其他终端中文乱码的原因无非有三种:(1)Linux系统的编码问题:(2)xShell终端的编码问题: (3)两端的语言编码不一致 ...

  3. Mysql命令行中文乱码的解决方法

    环境:Windows 8 64位,Mysql  5.0.96 for Win64 (x86) 数据库本身安装时默认已经是使用utf8编码的了,但在命令行中执行查询时,查询到的中文依然乱码,解决方法如下 ...

  4. 30. CentOS终端命令行显示中文乱码的解决方法

    安装CentOS的时候选择了中文,结果在终端不能显示中文,都是乱码,解决方法:修改/etc/sysconfig/i18n,内容为   代码如下: LANG="zh_CN.GB18030&qu ...

  5. windows下SVN日志反馈中文乱码的解决方法

    转自:https://shiyousan.com/post/635889908703806636 TortoiseSVN中文乱码的问题困扰了我好久,特别是每次使用“以标准差异文件显示修改”时,打开的文 ...

  6. 【IntelliJ IDEA】从资源文件读取出来就中文乱码的解决方法

    在application.properties资源文件中设置两个自定义的属性以及属性值: com.sxd.name = "德玛西亚" com.sxd.want = "王者 ...

  7. spring mvc中关于url中传递中文乱码的解决方法

    在传值过程中,也是乱码出现的频繁地.先不说到底是什么场景了,通常常用的方案有如下几个 配置指定的filter <!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码--> < ...

  8. java 中文乱码的解决方法

    1. 这方法行之有效,但是谨慎用,它会作用服务器.超链接中带有的中文字符,<a class="add" href = "system/showDataAdd.act ...

  9. MyEclipse和tomcat结合编写jsp对于中文乱码的解决方法

    一.Java和jsp 中文乱码原因和解决方法: Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦.原因有两方面: 第一方面:J ...

随机推荐

  1. Eclipse上GIT插件EGIT使用

    一.安装EGit插件 參考:MyEclipse8.5整合Git 二.EGit配置 配置个人信息 Window > Preferences > Team > Git > Conf ...

  2. 根据获取Enum名获取对应的值通用方法(仅限值为int的)

    /// <summary> /// 获取枚举对应的值 /// </summary> /// <typeparam name="T">枚举类型&l ...

  3. .net通用权限框架B/S(一)

    一直做软件实施,用过一些二次开发平台,最近看了一些大神写的框架,于是参考写了一个B/S通用权限框架,项目使用MVC4+EF5+EASYUI(.net framework4),开发环境vs2010+sq ...

  4. Hadoop安装(2)安装hadoop 前的centos 设置

    将虚拟机网络连接设为:Bridged 添加用户:hadoop,设置密码.关闭防火墙,selinux.暂且不关闭不需要的任务. 参照:http://www.cnblogs.com/xia520pi/ar ...

  5. JAVAscript——菜单下拉列表练习(阻止事件冒泡)

    下拉列表框,鼠标点击文本框,出现下拉,鼠标(离开的时候或者点击网页其他位置时)下拉列表消失.鼠标放到下拉列表的某一项上变背景色,点击下拉列表的某一项将该项的值显示在文本框内,然后下拉列表消失. < ...

  6. jvm如何知道那些对象需要回收

    1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前有两种算法 引用计数法 每个对象上都有一个引用计数,对象每被引用一次,引用计数器就+1,对象引用被释放,引用计数器-1,直到对象的引用计数为0 ...

  7. android 7.0带来的

    Android 7.0 给开发者带来了什么 新的 Andorid N (Andorid 7.0)预览版发布了,但是新的Android预览版需要我们在已存在的APP上测试几乎全部内容,包括不同种类的屏幕 ...

  8. 实现mysql的分组排名问题

    如下图所示的表结构,mysql中查出按照相同class的成员按照年龄排序. sql语句实现如下: SELECT id,name,age,rank FROM ( ,) AS rank,@pa:=ff.c ...

  9. PHP zip压缩文件及解压

    PHP zip压缩文件及解压 利用ZipArchive 类实现 只有有函数.界面大家自己写 ZipArchive(PHP 5.3 + 已自带不需要安装dll) /** * 文件解压 * @param ...

  10. Mvc Webapi+Fiddler调试 (WebAPI 一)

    Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js, ...