C# GBK转UTF8 出现的部分汉字乱码,求解,在线等

shwatty 2016-08-07 12:46:41


论坛发不了 GBK原文 截图看下




我使用的代码贴出来,大家指正一下,是哪里出现的问题
public static string GBKToUTF8(string txt)
{
byte[] buffer = Encoding.GetEncoding("GBK").GetBytes(txt);
return Encoding.UTF8.GetString(buffer);
}
...全文
1070 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
g_jawn 2019-07-12
  • 打赏
  • 举报
回复
public static string GBKToUTF8(string txt)
{
byte[] buffer = Encoding.Default.GetBytes(txt);
byte[] buffers = Encoding.Convert(Encoding.Default, Encoding.UTF8, buffer);
return Encoding.UTF8.GetString(buffers);
}
一两只鱼 2019-02-25
  • 打赏
  • 举报
回复
引用 5 楼 以专业开发人员为伍 的回复:
在你贴出来的帖子中,已经看不出来你到底是当初获取 txt 内容之前就有错误,还是这个转换函数的设计有误了。因为你的逻辑完全不对路,那么在你调用这个函数之前很可能早就有逻辑设计错误了。所以这类问题,要重新整理自己的上下文的更完整的思路,不要仅仅死盯着这一个函数概念上的错误。



感谢!
  • 打赏
  • 举报
回复
在你贴出来的帖子中,已经看不出来你到底是当初获取 txt 内容之前就有错误,还是这个转换函数的设计有误了。因为你的逻辑完全不对路,那么在你调用这个函数之前很可能早就有逻辑设计错误了。所以这类问题,要重新整理自己的上下文的更完整的思路,不要仅仅死盯着这一个函数概念上的错误。
  • 打赏
  • 举报
回复
一个“GBK转UTF8”大致是这样的逻辑: public static byte[] GBKToUTF8(byte[] buffer) { string txt = Encoding.GetEncoding("GBK").GetString(buffer); return Encoding.UTF8.GetBytes(txt); } 这才叫做编码转换。
  • 打赏
  • 举报
回复
在 .net 中(以及windows系统下其它绝大部分开发平台中),string 就是 unicode 编码的。你的 string txt 本身是 unicode 的。 你所谓的“GBK转UTF8”再此就是一个废料。可能你在调用这个函数之前(之外),把 二进制的 gbk 编码的数据转换为unicode 的字符串了,但是也可能你根本没有转换什么,而是自己也没有搞清楚你自己要说什么?!! 单独看你的函数,你把一个 unicode 编码的字符串 txt,首先转换为 GBK编码二进制形式(buffer),然后你又吧这个 GBK 编码内容当作 UTF8 编码的二进制内容而“转换”为 unicode 的字符串。 你这个函数扯什么逻辑呢?看不懂啊!!!它根本不是什么“GBK转UTF8”,你对自己的概念的理解就完全是混乱的。
xuzuning 2016-08-07
  • 打赏
  • 举报
回复
你所谓的 GBK原文 实际上是 utf-8 的 FM107太原交通广播-直播互动 在 gbk 环境中显示的样子
秋的红果实 2016-08-07
  • 打赏
  • 举报
回复
你的txt确定是延伸的GBK? 试一试GB2312

110,566

社区成员

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

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

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