none
HttpWebRequest URL中 汉字编码问题 RRS feed

  • 问题

  • 这几天遇到一个url中汉字编码的问题,经过研究发现
    .net的HttpWebRequest在发送url中,会把url中的汉字自动编码

    WebRequest req = HttpWebRequest.Create( "http://localhost/WebTest/Server.aspx?China=汉字 ");

    URL 被C#自动编码了。

    http://localhost/WebTest/Server.aspx?China=汉字

    变成了: http://localhost/WebTest/Server.aspx?China=%e6%b1%89%e5%ad%97
     
    我想解决问题的方式就是不让HttpWebRequest自动编码,url中含有汉字,发送出去后还是汉字
    2011年10月26日 8:42

答案

  • C#语言规范里面没有汉字。汉字也不是编码方式。

    如果没有用\x00AB 这样的Unicode转义符指定Unicode字符,你在代码文件里写的字符串的编码由文件的保存编码决定,而这个是依赖于你的计算机的默认非Unicode程序语言的设置。

    建议首先把字符串移动到资源,这样可以确保文本被保存为Unicode。然后你再转化为非Unicode的编码(GB2312,GB13080,BIG5之类)。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年10月26日 22:03
    版主

全部回复

  • 编码才不会出问题,不编码可能导致一些问题。

    通常的做法是使用urlencode处理。使用urldecode来读取。

     


    family as water
    2011年10月26日 15:28
  • C#语言规范里面没有汉字。汉字也不是编码方式。

    如果没有用\x00AB 这样的Unicode转义符指定Unicode字符,你在代码文件里写的字符串的编码由文件的保存编码决定,而这个是依赖于你的计算机的默认非Unicode程序语言的设置。

    建议首先把字符串移动到资源,这样可以确保文本被保存为Unicode。然后你再转化为非Unicode的编码(GB2312,GB13080,BIG5之类)。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年10月26日 22:03
    版主