“3阿”如何转换才能得到 结果: 0xa3 0xb3 0xb0 0xa2
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"),如果你的计算机本地 culture and region不是中文的话,default没用的,必须使用gb2312。不用循环每一个byte的,只要 用 fangxinggood 那样的方法就可以了
UTF-8编码当然能保存汉字,网页基本上都是UTF-8编码的
UTF-8 标准ASCII 1一个字节 西欧的一般是2字节 GJK(中日韩字符集)一般来说是 3字节
GB2312(包括其他GB系列字符集) 标准ASCII 1字节 汉字两字节 。但是外国人看就是乱码,因为电脑上没装这个字符集
UTF-16 都是2字节。
(UTF-8 UTF-16 都能够转换为Unicode编码,所以外国人电脑看起来也不是乱码)
楼主的数据只有英文,用 UTF-8 GB2312 ASCII 来小蜜蜂论坛回帖机转换结果都是一样的。
并且由于标识位的存在 0xB1 0xB8 0x2E 用Encoding类去转换,还会出现乱码
还不如一个字节一个字节的处理