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

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

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

3个回答

7

在IE浏览器的地址栏中显示的文本是这些字符的十六进制版本的URL编码形式。在UTF-8编码下,“育儿”的十六进制版本为E882B2E584BF:

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

s等于'育儿'。

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


2

HttpUtility.UrlEncode可以对URL进行编码,而HttpUtility.UrlDecode则可以将其还原。

示例:

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

0
你确定你正在使用Unicode编码(而不是默认编码)吗?默认编码无法处理中文字符。

你能给我一个例子吗? - CodeYun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接