【问题标题】:How would I convert this .NET string to UTF-8我如何将此 .NET 字符串转换为 UTF-8
【发布时间】:2013-07-22 01:35:49
【问题描述】:
  var stringu = @"\u003cbr /\u003e\u003cbr /\u003eHello world";

这里的背景 - 我正在使用 HttpClient 请求数据,并且正在获取 UTF-8 格式的 JSON 字符串(内容类型:application/json;charset=utf-8 是响应的标头)。

为了模拟内容转换我写了这段代码

  var stringu = @"\u003cbr /\u003e\u003cbr /\u003eHello world";
  var ubytes = Encoding.UTF8.GetBytes(stringu);
  var asciibytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, ubytes);
  var ascii = Encoding.UTF8.GetString(asciibytes);
  Console.WriteLine(ascii);
  Console.ReadKey();

但这不起作用。 我承认 - 我不完全理解 UTF-16/8 转换(或者即使我需要这样做,考虑到我只是将返回的字节输出到一个 html 文件),所以这里的任何帮助表示赞赏。

【问题讨论】:

  • 我很不清楚你想要得到什么结果 - 我希望 JSON 库能够为你处理所有这些。
  • 为什么使用 ascii?为什么不是 UTF16? .NET 的内部 char 类型?


  • Hello world - 是我想要的控制台输出
  • @ColeJohnson 显示的字符串只是作为 http 请求响应返回的 UTF-8 字符串的 sn-p
  • 这里有一个小提示。您不能在控制台中使用
    。它不是 HTML。此外,该字符串可能已经被写入。您的代码只是将其转换为 ASCII,然后通过将其转换为字符串返回 UTF-16。

标签: c# .net utf


【解决方案1】:

试试下面的代码,它会帮助你

var ss = Microsoft.JScript.GlobalObject.unescape("\u003cbr /\u003e\u003cbr /\u003eHello world")

【讨论】:

  • 你要导入什么库?
  • 右键单击项目的“参考”部分,转到“.Net”选项卡并选择Microsoft.JScript
  • 如果您没有注意到,我的示例中的 stringu 是带引号的字符串。您的示例是一个已经编码的 UTF-16 字符串,因此不需要转义。我用我的字符串尝试了这个方法,它没有用。
  • 感谢您尝试一下! :)
猜你喜欢
  • 2013-03-02
  • 1970-01-01
  • 2013-08-20
  • 2010-09-21
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
相关资源
最近更新 更多