请问GBK编码的一个问题,把已转的转成汉字 比如: %C4%E3%BA%C3 是"你好”的意思。怎么把 %C4%E3%BA%C3 转成 “你好" ?多谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var str = System.Web.HttpUtility.UrlDecode("%C4%E3%BA%C3", System.Text.Encoding.GetEncoding("GB2312"));添加 System.Web.dll 多谢回复。除了 HttpUtility.UrlDecode 方法还有其他办法么?我是在silverlight里使用, SL里HttpUtility.UrlDecode()只有一个参数,没有Encording参数。 string aaa = HttpUtility.UrlDecode(str, System.Text.Encoding.GetEncoding("GBK")); 对了,我想要的是Encode 而不是Decode 可以直接用下面的方法代替,Encoding.UTF8 自己根据实际替换public static string UrlEncode(string input) { StringBuilder newBytes = new StringBuilder(); var urf8Bytes = Encoding.UTF8.GetBytes(input); foreach (var item in urf8Bytes) { if (IsReverseChar((char)item)) { newBytes.Append('%'); newBytes.Append(item.ToString("X2")); } else newBytes.Append((char)item); } return newBytes.ToString(); } 你好,你的方法也不行,而且少了一个方法 IsReverseChar()我就是想通过 “%C4%E3%BA%C3” 得到 你好 2个字 你不是说要 Encode 嘛? "对了,我想要的是Encode 而不是Decode" private static bool IsReverseChar(char c) { return !((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '-' || c == '_' || c == '.' || c == '~'); } 不好意思.我上面好像说错了。我就是想通过 “%C4%E3%BA%C3” 得到 你好 2个字 刚才在SL4试了下: public static string UrlDecode(string input) { var arr = input.Split(new[] {'%'}, StringSplitOptions.RemoveEmptyEntries); var bytes = arr.Select(s => Convert.ToByte(s, 16)).ToArray(); var result = Encoding.GetEncoding("GB2312").GetString(bytes, 0, bytes.Length); return result; }很可惜,SL4也还不支持 GB2312 或者 GBK 编码。 多谢了!这个可以。看代码的话,首先吧%去掉,然后对于每一个字符比如说'C4‘做Convert.ToByte(s, 16)操作,是因为中文是16位的是把? 将文本转换为二进制和将二进制转换为文本的C#代码 winform程序的debug和release版本问题 DG如何做到按值改变颜色及找到这一列的FieldName与本行的对应值 将数字通过算法变成字母!越复杂越好! 欢迎高手参与 帮忙怎么解析通过HTTP协议发送过来的字符串,用哪个类可以做?? window程序--如何实现文件相对路径??? C# 读取pdf 请高人留步 flickr取社群里的照片,无法获取 C#如何通过反射来实例化接口 如何在ListViewItem 加图片 新人问题:创建和写文件
多谢回复。除了 HttpUtility.UrlDecode 方法还有其他办法么?我是在silverlight里使用, SL里HttpUtility.UrlDecode()只有一个参数,没有Encording参数。
string aaa = HttpUtility.UrlDecode(str, System.Text.Encoding.GetEncoding("GBK"));
对了,我想要的是Encode 而不是Decode
可以直接用下面的方法代替,Encoding.UTF8 自己根据实际替换
public static string UrlEncode(string input)
{
StringBuilder newBytes = new StringBuilder();
var urf8Bytes = Encoding.UTF8.GetBytes(input);
foreach (var item in urf8Bytes)
{
if (IsReverseChar((char)item))
{
newBytes.Append('%');
newBytes.Append(item.ToString("X2")); }
else
newBytes.Append((char)item);
} return newBytes.ToString();
}
你好,你的方法也不行,而且少了一个方法 IsReverseChar()我就是想通过 “%C4%E3%BA%C3” 得到 你好 2个字
private static bool IsReverseChar(char c)
{
return !((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')
|| c == '-' || c == '_' || c == '.' || c == '~');
}
不好意思.我上面好像说错了。我就是想通过 “%C4%E3%BA%C3” 得到 你好 2个字
{
var arr = input.Split(new[] {'%'}, StringSplitOptions.RemoveEmptyEntries);
var bytes = arr.Select(s => Convert.ToByte(s, 16)).ToArray();
var result = Encoding.GetEncoding("GB2312").GetString(bytes, 0, bytes.Length);
return result;
}很可惜,SL4也还不支持 GB2312 或者 GBK 编码。
多谢了!这个可以。看代码的话,首先吧%去掉,然后对于每一个字符比如说'C4‘做Convert.ToByte(s, 16)操作,是因为中文是16位的是把?