`
linkyou66
  • 浏览: 234896 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

utf-8编码问题之urlencode和getbytes得到的utf-8区别验证测试

 
阅读更多
<p>上个星期又发生了一起编码问题引起的bug,继续研究。其中涉及URLEncode对字符串进行utf-8编码和getbytes对字符串进行utf-8编码的区别。</p>
<p>详细研究结论如下</p>
<p>首先utf-8编码的中文是采用三个字节一个中文来存储的。</p>
<p>验证代码如下</p>
<p>String msg = "中国";</p>
<p>System.out.println(msg.getBytes("utf-8").length);</p>
<p>打印出:6</p>
<p>采用URLEncode来打印msg</p>
<p>System.out.println(URLEncoder.encode(msg,"utf-8"));</p>
<p>打印出:</p>
<p>%E4%B8%AD%E5%9B%BD</p>
<p>我们希望通过验证getbytes得到utf-8和URLEncodeer得到utf-8是一致的代码如下</p>
<p>String xyz="中";<br>String xyg="国";</p>
<p>System.out.println(Integer.toHexString(0xff &amp; xyz.getBytes("utf-8")[0]));<br>System.out.println(Integer.toHexString(0xff &amp; xyz.getBytes("utf-8")[1]));<br>System.out.println(Integer.toHexString(0xff &amp; xyz.getBytes("utf-8")[2]));<br>System.out.println(Integer.toHexString(0xff &amp; xyg.getBytes("utf-8")[0]));<br>System.out.println(Integer.toHexString(0xff &amp; xyg.getBytes("utf-8")[1]));<br>System.out.println(Integer.toHexString(0xff &amp; xyg.getBytes("utf-8")[2]));</p>
<p>打印出:</p>
<p>e4<br>b8<br>ad<br>e5<br>9b<br>bd</p>
<p>是否证明两者是相同的,答案是否定的</p>
<p>因为URLEncode还会做一些特殊处理,对一些特殊字符串</p>
<p>String xys = " ";</p>
<p>System.out.println(URLEncoder.encode(xys ,"utf-8"));</p>
<p>打印出:"+"</p>
<p>System.out.println(Integer.toHexString(0xff &amp; xys.getBytes("utf-8")[0]));</p>
<p>打印出:"20"</p>
<p>对于普通英文,两者也是一致的。</p>
<p></p>
分享到:
评论

相关推荐

    URL GB2312 UTF-8编解码.zip

    标题 "URL GB2312 UTF-8编解码.zip" 涉及的主要知识点是字符编码和URL编码,特别是GB2312与UTF-8这两种编码方式在URL中的应用。URL(Uniform Resource Locator)是互联网上的资源定位符,为了在网络上传输,URL中的...

    delphi操作utf-8转码HTTPEncode

    总结,要在Delphi中完成“UTF-8转码HTTPEncode”的操作,你需要先将UTF-8字符串转换为Unicode字符串,然后使用`UrlEncode`函数进行HTTPEncode编码。这个过程对于处理HTTP请求中的参数或URL路径非常重要,可以避免...

    URLEncode编码转换软件

    VB中的UTF8EncodeURI函数就是用来将字符串按照UTF-8编码规则进行URLEncode的。例如,一个包含中文字符的字符串在经过UTF8EncodeURI处理后,会将每个字符转换为其对应的UTF-8字节序列,并且每个字节都会被替换为"%XX...

    gb2312和utf-8文件编码互换工具 v1.05-ASP源码.zip

    在本案例中,我们有一个名为"gb2312和utf-8文件编码互换工具 v1.05-ASP源码.zip"的压缩包,它包含了一款ASP源码,可以实现gb2312与utf-8编码之间的转换。 首先,让我们了解一下gb2312和utf-8编码。GB2312,全称...

    临时文件之utf-8Access数据库问题.rar

    UTF-8编码是目前最普遍的字符编码标准,它支持全球大部分语言,包括中文。然而,在处理Access数据库时,如果编码设置不当,可能会遇到各种字符编码问题,导致乱码现象,尤其是在ASP(Active Server Pages)环境中...

    URL编码,Gb2312页面提交到Utf-8页面

    Gb2312是一种广泛应用于中国大陆地区的字符编码标准,而UTF-8则因其能够支持全球绝大多数语言的特性,在互联网领域得到广泛应用。 #### 二、基础知识简介 ##### 1. Gb2312编码 Gb2312(又称GB2312)是中国国家标准...

    asp下GB2312转UTF8编码

    不同的编码标准用于表示各种字符集,例如GBK(GB2312)和UTF-8。在ASP(Active Server Pages)环境中,有时我们需要将GB2312编码的字符串或文件转换为UTF-8编码,以便在多语言环境下兼容性更强。本篇将详细介绍ASP中...

    Quoted-printable 编码介绍、Quoted-printable编码解码转换方法

    尽管Quoted-printable编码的规则相对简单,但它的编码效率和简单性使其在邮件格式中得到了广泛应用。这种编码方式确保了邮件在不同邮件系统之间传输时,即使包含非ASCII字符和二进制数据,也能够被正确地处理和显示...

    将字符串转换成gb2312或者utf-8编码的参数(js版)

    在标题和描述中提到的问题,即如何将字符串转换为GB2312或UTF-8编码以便在URL中安全地传递中文参数。下面将详细介绍这个过程,并给出提供的代码实现。 首先,我们需要理解GB2312和UTF-8两种编码方式。GB2312是中国...

    php中json_encode UTF-8中文乱码的更好解决方法

    总之,处理JSON编码中文乱码问题的关键在于确保数据源是UTF-8编码,或者在编码之前将数据转换为UTF-8。使用 `json_encode` 的 `JSON_UNESCAPED_UNICODE` 选项,以及编写自定义的转换函数,可以帮助有效地解决这个...

    WysiwygPro所见即所得编辑器 v2.2.12.2 中文UTF-8增强版.rar

    WysiwygPro是一个WEB可视化编辑器,可用于Joomla、Drupal等CMS系统,当然也可简单修改用于其它WEB程序 汉化修正除了需要实现GB2312-UTF-8间的转换,还要实现UTF-8- urlencode码间的转换

    用Javascript实现UTF8编码转换成gb2312编码

    在JavaScript中,编码转换是一个常见的任务,特别是在处理中文字符时,因为不同的编码标准如UTF-8和GB2312可能会导致乱码问题。这里,我们有两个函数:`UrlEncode` 和 `getSpell`,它们用于将UTF8编码的字符串转换为...

    js实现urlencode加密适用于ut8编码

    在网站开发过程中,使用汉字传输会导致有时URL会出现乱码的问题,可通过urlencode对中文进行编码,然后再解码,避免出现乱码,此函数加密的字符串可通过php的urldecode进行解码

    关于applicationx-www-form-urlencoded等字符编码的解释说明

    * 它可以将窗体数据编码为名称/值对,易于服务器解析和处理 * 它可以与get和post请求同时使用 然而,application/x-www-form-urlencoded也存在一些缺点,如: * 它不能上传文件,因为它只能将窗体数据编码为名称/...

    vb url编码解码vb url编码解码vb url编码解码

    标题和描述中提到的“vb url编码解码”是指在Visual Basic(VB)环境中进行URL编码和解码的过程。URL编码,也称为百分号编码,是一种用于将特殊字符转换为适用于URL格式的编码方式,目的是确保这些特殊字符能够正确...

    解决了浏览器URL地址栏直接输入get参数值包含中文时的urlencode编码格式问题

    原来urlencode这个函数有2中编码方式,一种是gbk格式的编码,一种是utf-8格式的。并且这个格式居然不能再这个函数里面设置,导致这个结果不可控制,在不同浏览器环境下面结果不同,不能得到自己想要的格式编码。在...

    node-iconv-urlencode:用于将 url 编码的字符串编码和解码为每种可能编码的节点包

    iconv-urlencode 用于编码和解码来自/到每种可能编码的 url 编码字符串的节点包这个包使用iconv-lite进行不同字符集的编码。 因此,此包支持的所有编码都可以在这里使用。 转换后的字符串根据 HTML5 规范进行 url ...

    java使用URLDecoder和URLEncoder对中文字符进行编码和解码

    需要注意的是,`URLEncoder`默认使用ISO-8859-1编码,但大多数现代Web应用都使用UTF-8编码,因此在编码和解码时要确保字符集的一致性,否则可能会导致解码错误。 总结一下,`URLDecoder`和`URLEncoder`的主要用途是...

    URLEncode.7z

    C++支持MFC的类,HTTP请求链接转UTF-8 CURLEncode URLEnCode; CString szURL URLEnCode.URLEncode(szURL), .

Global site tag (gtag.js) - Google Analytics