“3阿”如何转换才能得到结果:0xa30xb30xb00xa2
byte[]arr=Encoding.UTF-8.GetBytes("3阿");
不知道你这个是什么编码的,这个转出来是4个byte数组,你自已转成16进制,不过和你要的对不上。编码的问题?
byte[]arr=Encoding.ASCII.GetBytes("3阿");
var bytes = Encoding.GetEncoding("GB2312").GetBytes("3阿");
没错,是GB2312
/// 从汉字转换到16进制
/// </summary>
/// <param name="s">需要转换的字符串</param>
/// <returns>返回16进制</returns>
public static string GetHexFromChs(string s)
{
System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
byte[] bytes = chs.GetBytes(s);
StringBuilder Text = new StringBuilder();
for (int i = 0; i < bytes.Length; i++)
{
Text.Append(string.Format("{0:X}", bytes[i]));
Text.Append(" ");
}
string ggg = Text.ToString();
string ggf = ggg.Substring(ggg.Length - 1, 1);
if (ggf == " ")
{
ggg = ggg.Remove(ggg.Length - 1, 1);
}
return ggg;
}
#endregion
如果对应的字符是中文的,那么UTF8是不管用的,必须使用Default或者GetEncoder("gb2312"),如果你的计算机本地 cultureandregion不是中文的话,default没用的,必须使用gb2312。不用循环每一个byte的,只要 用fangxinggood那样的方法就可以了
UTF-8编码当然能保存汉字,网页基本上都是UTF-8编码的
UTF-8标准ASCII1一个字节西欧的一般是2字节GJK(中日韩字符集)一般来说是3字节
GB2312(包括其他GB系列字符集)标准ASCII1字节汉字两字节。但是外国人看就是乱码,因为电脑上没装这个字符集
UTF-16都是2字节。
(UTF-8UTF-16都能够转换为Unicode编码,所以外国人电脑看起来也不是乱码)
楼主的数据只有英文,用UTF-8GB2312ASCII来小蜜蜂论坛回帖机转换结果都是一样的。
并且由于标识位的存在0xB10xB80x2E用Encoding类去转换,还会出现乱码
还不如一个字节一个字节的处理