`
az7772010
  • 浏览: 203172 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

C# 中文在URL中的编码 utf8 gb2312

 
阅读更多

C# 中文在URL中的编码

正在研究一个程序,输入一个关键字,能够把这个关键字发送到Google,yahoo等搜索引擎,进行搜索,然后打开结果网页。原理很简单。比如在Google搜索China,搜索结果页面的URL就是“http://www.google.com/search?hl=zh-CN&q=China&lr=”。只要替换红颜色的内容,就可以按照不同的关键字搜索。

但是如果关键字是中文,就会出现问题。比如在google搜索“中国”,Url是“http://www.google.com/search?hl=zh-CN&newwindow=1&q=中国&lr=”。汉字“中国”被按照UTF-8的格式进行编码。

不仅汉字进行编码,一些特殊字符也会进行编码。比如搜索“C#”,URL是“http://www.google.com/search?hl=zh-CN&newwindow=1&q=C#&lr=”。

一般来说,国外的网站都是按照UTF-8编码,而“百度”是按照“GB2312”进行编码的。比如搜索“中国”,URL是“http://www.baidu.com/s?wd=�й�&cl=3”

我们对比一下:C#中国的编码

编码 结果 网站
UTF-8 C#中国 Google
GB2312 C#�й� BaiDu

总结:
UTF-8中,一个汉字对应三个字节,GB2312中一个汉字占用两个字节。
不论何种编码,字母数字都不编码,特殊符号编码后占用一个字节。

//按照UTF-8进行编码
string tempSearchString1 = System.Web.HttpUtility.UrlEncode("C#中国");
//按照GB2312进行编码
string tempSearchString2 = System.Web.HttpUtility.UrlEncode("C#中国",System.Text.Encoding.GetEncoding("GB2312"));

<wbr></wbr>

//--------------------------------------------------------------------------------------------------------------

【转】ASP.NET中c#的URL编码处理
要解决的问题:
将下面的URL作为一个参数传到其他的页面
1 http://domain/de.apx?uid=12&page=15
2 url后面的参数中出现汉字等,如: ....aspx?title=起重机
在出现上面的情况的时候,必须经过一个RUL编码和解码的过程,否则会出现错误.


代码如下:


//传值
string temp = " 添加到收藏夹");

//在另外一个文件中取从上面传的值
if (Request.QueryString["url"] != null)
{
<wbr><wbr><wbr> string url = Server.UrlDecode(Request.QueryString["url"].ToString());<br><wbr><wbr><wbr> this.txtAddress.Text = url;<br> }<br> if (Request.QueryString["title"] != null)<br> {<br><wbr><wbr><wbr> string title = Server.UrlDecode(Request.QueryString["title"].ToString());<br><wbr><wbr><wbr> this.txtTitle.Text = title;<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

//-----------------------------------------------

URL编码对照表

1、string s = System.Web.HttpUtility(byte[] data);

这里的s即为转换出来的URL编码,需要注意的是这里的byte数组必须是具有ASCII意义的数组,由string通过System.Text.Encoding.Default.getBytes(str.ToCharArray());是不正确的,不能正确转义!

2、根据URL编码规则写个小程序

private string UrlEncode(byte[] byt)
<wbr> {<wbr><wbr><br><wbr><wbr><wbr><wbr> string<wbr> desstr = "";<wbr><wbr><br><wbr><wbr><wbr><wbr> for(int i=0; i<br><wbr><wbr><wbr><wbr> {<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr> desstr += "%";<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr> desstr += byt[i].ToString("X2");<wbr><wbr><br><wbr><wbr><wbr><wbr> }<br><wbr><wbr><wbr><wbr> return desstr;<br><wbr> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

以下是URL编码对照表:

backspace
tab<wbr><wbr><wbr><wbr><wbr><wbr><br> linefeed<wbr><br> creturn<wbr><wbr><br> space<wbr><wbr><wbr><wbr><br> !<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> !<br> "<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> "<br> #<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> #<br> $<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> $<br> %<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> %<br> &amp;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &amp;<br> '<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> '<br> (<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> (<br> )<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> )<br> *<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> *<br> +<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> +<br> ,<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ,<br> -<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> -<br> .<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> .<br> /<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> /<br> 0<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 0<br> 1<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 1<br> 2<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 2<br> 3<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 3<br> 4<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 4<br> 5<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 5<br> 6<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 6<br> 7<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 7<br> 8<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 8<br> 9<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 9<br> :<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> :<br> ;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ;<br> &lt;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;<br> =<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> =<br> &gt;<wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

分享到:
评论

相关推荐

    C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)

    以下是获取文件编码的一个类: using System; using System.IO; using System.Text; /// /// FileEncoding 的摘要说明 /// namespace FileEncoding { /// /// 获取文件的编码格式 /// public class Encoding...

    C#写的 GBK GB2312 UTF-8转换

    C#写的 GBK GB2312 UTF-8转换 功能简单,仅供学习

    gb2312,utf-8,utf-8-bom等编码格式的互相转换

    文件的编码格式需要转换,gb2312,utf,utf-8等编码格式的相互转换等

    JS GB2312转UTF8 支持中英文混合

    JS GB2312TOUTF8 UTF8TOGB2312 编码转换 /* * GB2312转UTF8 * 例: * var xx=new GB2312UTF8(); * var Utf8=xx.Gb2312ToUtf8("你aaa好aaaaa"); * var Gb2312=xx.Utf8ToGb2312(Utf8); * ...

    C# 制作UTF8 到 GB2312的代码

    一个简单的转换工具,对某一个目录中的utf-8文件进行转换;您也可以利用这个原理进行其他编码的转换,例如utf-8到unicode. 注意:使用的是C#自带的字符集转换功能.本人不了解utf-8的等编码原理.

    C# 生成xml文件,编码为utf-8方法

    C# 生成xml文件,编码为utf-8方法

    c#自动判断URL编码方法

    URL中包含编码的中文的时候,程序获取queryString需要根据url的不同编码,采用不同的解码方式,RequestQueryString方法能够自动识别url是用UTF-8编码还是GB2312编码,从而自动获取争取的值。 应用范例:...

    GB2312字符与UTF-8字符互转

    LabVIEW 自带的VI,可以实现GB2312字符与UTF-8字符互,用在网络字符转换很方便。输入隐藏功能,自己很难找到。

    汉字转为HTML的URL编码

    搜集了网上的VBA函数,在excel中通过函数将汉字转为两种类型的URL编码,例如将 天空 二字转化为GB2312的“%CC%EC%BF%D5”或者是UTF-8的 “%E5%A4%A9%E7%A9%BA”。方便用于连接转换。VBA相关函数均来自网上,做了小小...

    C#:批量修改文本编码为UTF-8(含源码)

    C#:批量修改文本编码为UTF-8(含源码),可将指定文件夹下的所有是.txt、.cs、.lua后缀的文件(需要更多支持可自行修改)的编码格式修改为UTF-8,VS2013的项目。

    嵌入开发语言(c#&java)的基于缓存一致性的分布式事务框架源码.zip

    嵌入开发语言(c#&java)的基于缓存一致性的分布式事务框架源码嵌入开发语言(c#&java)的基于缓存一致性的分布式事务框架源码嵌入开发语言(c#&java)的基于缓存一致性的分布式事务框架源码嵌入开发语言(c#&java)的基于...

    整人e版 0.1b

    c#写的,在Win2000下调试通过,请确认你有.net的运行平台,先! 谢谢大家多提意见哈。 版权申明: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该软件为自由软件,提供源码,请不要用于任何商业,...

    ASCII/GB2312/UTF-8/Unicode编码 字符串与字节转换查看源码

    ASCII/GB2312/UTF-8/Unicode编码 字符串与字节转换查看源码。采用Visual Studio 2008开发,使用C# Windows Form编写,代码简单易懂。 输入:CSDN-全球最大中文IT社区。 选择:GB2312 结果:4353444E2DC8ABC7F2D7EEB...

    让Silverlight支持GB2312中文编码

    让Silverlight支持GB2312中文编码 Gb2312Encoding encoding = new Gb2312Encoding(); string str1 = encoding.GetString(bytes, 0, bytes.Length);

    代码重构(C# & ASP.NET版),中文完整扫描版

    在《代码重构(C#&ASP.NET版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码。此外,还将学习如何从头开始构建原型应用程序,然后利用重构技术将原型转换为正确设计的、...

    C# cs文件 GB2312 转UFT-8

    C# 源代码,把 所有的 cs文件从GB2312 转换成UTF-8. 批量导入转换,输入目录路径既可。

    c#分页控件

    c#分页控件,最快速度的分布控件 public class Pager : WebControl, IPostBackEventHandler, INamingContainer { private string CurrentPageText = "页次:{0}/{1}页&nbsp;&nbsp;{2}条/页&nbsp;&nbsp;共{3}条&...

    C#连接数据库UFT-8转为GB2312格式

    以前写的,C#连接数据库UFT-8转为GB2312格式的demo,希望可以帮助到大家

    C#程序对UTF8,BASE64编码的工作原理程序化实现

    现今网络应用已经很普及,而对网络方面的编程少不了要用到不同的编码,本程序只是简单的对UTF8及BASE64编码进行简单的剖析,仅供学习参考,若您有更优化的处理办法希望能共同研究一下。程序是用C#编写。我曾用过其它...

Global site tag (gtag.js) - Google Analytics