后端接收web请求,url中存在中文,后端接收到得url是经过编码的。
如:原url为:http://localhost:12345/?张伯伦 
如果直接发送该请求,则server端接收到得数据为:http://localhost:12345?%D5%C5%B2%AE%C2%D7
如果发送请求时使用JavaScript的encodeURI()编码,则server端接收到得数据为:
http://localhost:12345/?%E5%BC%A0%E4%BC%AF%E4%BC%A6现在的问题是server端接收到这些数据,如何才能把后面这串%XX%XX%XX%XX装换成utf-8或者gbk编码的数据 。(使用c++编码)希望哪位达人对这些编码很清楚的给解释几个问题:
1、“张伯伦”是如何被默认编码成“%D5%C5%B2%AE%C2%D7”的,又该如何使用c++将其装换成utf-8或者gbk。
2、“张伯伦”通过JavaScript的encodeURI()编码成%E5%BC%A0%E4%BC%AF%E4%BC%A6,是什么原理,又该如何使用c++将其装换成utf-8或者gbk。小弟不需要给位给出代码,但希望达人们给个原理性的解释。谢谢了!!!!

解决方案 »

  1.   

    看看这篇文章 用JS解码PHP的urlencode编码http://bbs.blueidea.com/thread-2889986-1-1.html
      

  2.   

    还有 用js进行url编码后用php反解以及用php实现js的escape功能函数总结http://www.chinaunix.net/jh/27/1016251.html
      

  3.   

    escape 方法描述 对 String 对象编码以便它们能在所有计算机上可读 语法 
    escape(charstring) charstring 参数是要编码的 String 对象。 说明 
    escape 返回一个包含了 charstring 内容的新的 String 对象( Unicode 格式), 所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。 例如,空格返回的是 "%20" 。 字符的值大于 255 的用 %uxxxx 格式存储。 
    适用于:Global 对象encodeURI 方法 
    描述 
    返回编码为有效的统一资源标识符 (URI) 的字符串。 语法 
    function encodeURI(URIString : String) : String 参数 
    URIString 必选。表示编码 URI 的字符串。2007-7-31 备注 
    encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码。 
    适用于:Global 对象encodeURIComponent 方法 
    描述 
    返回编码为统一资源标识符 (URI) 的有效组件的字符串。 语法 
    function encodeURIComponent(encodedURIString : String) : String 参数 
    encodedURIString 必选。表示编码 URI 组件的字符串。 备注 
    encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI 组件,请使用 encodeURI 方法进行编码。 
    适用于:Global 对象
      

  4.   

    为何要接触到c++的东西呢 做web的话 c++没有太大的必要吧
      

  5.   

    直接在论坛里搜一下 encodeURL  论坛里很多关于这方面的贴子,LZ可以借鉴一下
      

  6.   

    encodeURIComponent 方法 
    js用这个