在我的ASP.NET MVC应用程序中,我使用了中文类别名称,它在IE的网址中显示为%E8%82%B2%E5%84%BF
,但实际的值是'育儿‘。
我想知道如何在C#中将'育儿‘转换为%E8%82%B2%E5%84%BF
,以及如何将其转换回来。有没有可能直接在网址链接中显示'育儿‘?这对搜索引擎优化有好处吗?
发布于 2009-09-03 18:58:32
IE地址栏中显示的文本是这些字符的十六进制版本的URL编码形式。用UTF-8编码的十六进制版本的'育儿‘是E882B2E584BF:
byte[] buffer = new byte[] { 0xE8, 0x82, 0xB2, 0xE5, 0x84, 0xBF };
string s = Encoding.UTF8.GetString(buffer);
%s等于“育儿”。
你不应该在网址中直接传输中文字符,它应该是用HttpServerUtility.UrlEncode和UrlDecode编码的网址。
发布于 2009-09-03 19:07:00
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"
发布于 2009-09-03 18:54:19
您是否检查以确保您使用的是Unicode编码(而不是默认编码)?默认编码不能处理中文字符。
https://stackoverflow.com/questions/1375257
复制相似问题