项目中遇到的 GBK 编码问题,记录如下。

将代码精简为:

<!DOCTYPE HTML>
<html>
<meta charset="gb2312">
<a href='http://huaban.com/search/?q=美腿'> click it </a>
</html>

打开网页中的链接,发现跳转去了莫名其妙的网页。我们看看打开页面的 url:

http://huaban.com/search/?q=%C3%C0%CD%C8

好吧,这是 GBK 的编码问题。"美腿" 的 GBK 编码(url 中 q 后面跟的参数)为 %C3%C0%CD%C8(http://www.mytju.com/classcode/tools/urlencode_gb2312.asp)

我们在浏览器地址栏输入一个网址的时候,中文会自动被编码,而因为该网页是 GBK 编码的,所以会被编为 GBK 码,而因为浏览器不认识 GBK 的编码,所以以为输入的关键字是 %C3%C0%CD%C8,就打开了这样的一个网页。如果我们用的是 utf-8 编码,就没有这个问题,因为浏览器能识别 utf-8 编码,所以在地址栏中的中文会被自动编码和解码。

那么如果是 GBK 的大环境下,怎么解决这个问题呢?可以把该 url 用 unicode(utf-8)编下码,这样就能在浏览器中自动解码了。

<!DOCTYPE HTML>
<html>
<meta charset="gb2312">
<a href='http://huaban.com/search/?q=美腿'> click it </a>
<script>
      var a = document.querySelector('a');
      a.setAttribute('href', encodeURI(a.getAttribute('href')));
</script>
</html>

GBK 编码时 url 中带中文参数的问题的更多相关文章

  1. get请求url中带有中文参数出现乱码情况

    在项目中经常会遇到中文传参数,在后台接收到乱码问题.那么在遇到这种情况下我们应该怎么进行处理让我们传到后台接收到的参数不是乱码是我们想要接收的到的,下面就是我的一些认识和理解. get请求url中带有 ...

  2. SpringMVC重定向路径中带中文参数

    SpringMVC重定向路径中带中文参数 springboot重定向到后端接口测试 package com.mozq.http.http_01.demo; import org.springframe ...

  3. js的url中传递中文参数乱码,如何获取url中参数问题

    一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript ...

  4. Js的Url中传递中文参数乱码的解决

    一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: 2. 接收参数页面:test02.html 二:如何获取Url& ...

  5. IE浏览器url中带中文报错的问题;以及各种兼容以及浏览器问题总结

    1.解决IE浏览器url带中文报错 /* encodeURI()解决IE浏览器请求url中带中文报错的问题 */ URL = encodeURI("<%=basePath%>ve ...

  6. js获取url中的中文参数出现乱码

    解决方法 function getQueryString(key){ var reg = new RegExp("(^|&)"+key+"=([^&]*) ...

  7. url中拼接中文参数,后台接收为乱码的问题

    遇到在URL中拼接中文的参数,后台拿到的数据为乱码的问题,这里来说一下问题出现的原因与解决方法. 大家比较关心的应该是解决的方法,因此先说解决方法. 解决方法 解决的方法是在客户端对这个中文参数进行编 ...

  8. url中传递中文参数时的转码与解码

    URL传递中文参数时的几种处理方式,总结如下: 1.将字符串转码:newString(“xxxxx”.getBytes("iso-8859-1"),"utf-8" ...

  9. 判断URL中的中文参数是GB2312还是Utf-8编码

    如两个URL字符串: &q=%E8%A3%99%E5%AD%90&style=grid&seller_type=taobao &q=%CE%D0%C2%D6%D4%F6 ...

随机推荐

  1. [oracle]数据库语言分类

    一般来说,数据库语言可以分成以下5大类: 1.数据定义语言DDL(Data Definition Language),用于改变数据库结构,包括创建.修改和删除数据库对象.包括create(创建).al ...

  2. 预写式日志(Write-Ahead Logging (WAL))

    SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性.而且大大减少了IO操作. WAL的核心思想是:在数据写入到数据库之前,先写入到日志.再将日 ...

  3. 烂泥:centos单独编译安装gd库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没 ...

  4. putty-不输入密码直接登陆

    在桌面建立新的快捷方式,命令行填写如下: d:\soft\putty.exe -pw 你的口令 用户名@服务器地址注意更换你的putty.exe的路径,为了避免出错,这里有个窍门,你可以找到putty ...

  5. Log4Net根据不同的Logger名称,生成日志文件到不同的地方。

    1.定义日志记录类 1: public class Log4NetLogger : ISystemLogger 2: { 3: static log4net.ILog securityLogger = ...

  6. 常用的JavaScript模式

    模式是解决或者避免一些问题的方案. 在JavaScript中,会用到一些常用的编码模式.下面就列出了一些常用的JavaScript编码模式,有的模式是为了解决特定的问题,有的则是帮助我们避免一些Jav ...

  7. 使用HTTP方式远程连接PowerShell

    借助Windows PowerShell,我们可以像管理Linux一样使用命令行来远程管理Windows服务器.但是默认情况下,我们只能在域环境中使用PowerShell Remoting.如果是通过 ...

  8. (六)责任链模式-C++实现

    使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止. 责任链模式是使用多个对象处理用户请求的成熟模式,它的关键 ...

  9. 使用ztree.js,受益一生,十分钟学会使用tree树形结构插件

    看到ztree.js,这几个字眼,毋庸置疑,那肯定就是tree树形结构了,曾经的swing年代有jtree,后来jquery年代有jstree和treeview,虽然我没写过,但是我见过,一些小功能做 ...

  10. Editor扩展之查看Prefab用在那儿

    Prefab查找需求 在项目开发阶段的中后期,工程中有越来越多的Prefab,当我们要修改一个prefab或删除无用的prefab时,或许我们不是那么清楚该prefab在那些场景中使用着或从未使用过, ...