如何使用C#编码和解码“中文”字符

时间:2009-09-03 18:51:50

标签: c# asp.net-mvc encoding seo urlencode

在我的ASP.NET MVC应用程序中,我使用中文类别名称,它在IE的URL地址中显示为%E8%82%B2%E5%84%BF,但实际值为“育儿”。

我想知道如何在C#中将“育儿”转换为%E8%82%B2%E5%84%BF,我怎样才能将其转换回来。是否可以直接在URL链接中显示“育儿”?对SEO有好处吗?

3 个答案:

答案 0 :(得分:7)

IE地址栏中显示的文本是这些字符的十六进制版本的URL编码形式。以UTF-8编码的'育儿'的十六进制版本是E882B2E584BF:

byte[] buffer = new byte[] { 0xE8, 0x82, 0xB2, 0xE5, 0x84, 0xBF };
string s = Encoding.UTF8.GetString(buffer);

s等于'育儿'。

您不应在网址中传输直接中文字符,而应使用HttpServerUtility.UrlEncodeUrlDecode进行网址编码。

答案 1 :(得分:2)

HttpUtility.UrlEncode会对网址进行编码,HttpUtility.UrlDecode会将其更改回来。

示例:

string orig = "http://example.com/育儿";
string encoded = HttpUtility.UrlEncode(orig);
// encoded should equal "http://example.com/%E8%82%B2%E5%84%BF"

答案 2 :(得分:0)

您是否检查过以确保使用Unicode编码(而不是默认值)?默认编码不会处理中文字符。