以下哪种转换编码的方法是正确的?

Daven172 2015-11-24 10:42:58

static void Main(string[] args)
{
string str = "abc一二三";

//方法一
byte[] utf8BytesA = Encoding.UTF8.GetBytes(str);

foreach (var item in utf8BytesA)
{
Console.Write(item + ", ");
}

Console.WriteLine();

//方法二
byte[] utf8BytesB = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, Encoding.Unicode.GetBytes(str));

foreach (var item in utf8BytesB)
{
Console.Write(item + ", ");
}

Console.WriteLine();
}


上面代码两种方法的输出是一样的:

97, 98, 99, 228, 184, 128, 228, 186, 140, 228, 184, 137,
97, 98, 99, 228, 184, 128, 228, 186, 140, 228, 184, 137,

哪一种才是正确的转换方法?
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystal_lz 2015-11-25
  • 打赏
  • 举报
回复
第一个是你直接编码 第二个 是编码转换的 从unicode 转换成 utf8 是在两种编码之间转换用的 第二种 等同于 Encoding.UTF8.GetBytes(Encoding.Unicode.GetString(Encoding.Unicode.GetBytes("your string"))); 假如你和外界通信 如获取一个网站的页面 而页面是 gbk的编码 而你却又想要 utf8的编码 那么 就可以使用第二种 很方便 假若 你页面获取到的 byte[] 为 byHtml 那就可以 Encoding.Convert(Encoding.GetCode("gbk"), Encoding.UTF8, byHtml); 如果你用第一种 就像我上面写的那样 Encoding.UTF8.GetBytes(Encoding.GetCode("gbk").GetString(byHtml)); 反正都一个吊样。。看你个人喜欢咯。。
by_封爱 版主 2015-11-25
  • 打赏
  • 举报
回复
一样的结果 肯定都是正确的.......
threenewbee 2015-11-24
  • 打赏
  • 举报
回复
关键看你需要用哪种编码,两种没有什么对错之分
tcmakebest 2015-11-24
  • 打赏
  • 举报
回复
byte[] 只能对应一种编码,用哪一种编码的,还得用那一种解码,错用就是乱码。
全栈极简 2015-11-24
  • 打赏
  • 举报
回复
常用第一种,第二种没用过,看下msdn对于方法的描述。 既然结果是一样的,说明效果是一致的,只不过第二种略显繁琐。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧