【问题标题】:Convert a string to a utf8 string将字符串转换为 utf8 字符串
【发布时间】:2014-01-29 22:58:19
【问题描述】:

我正在尝试转换类似的字符串

<Root>á</Root>

到它的 UTF 字符串表示,像这样

<Root>á</Root>

(取自本页:http://www.cafewebmaster.com/online_tools/utf8_encode

但是当我发出 Encoding.UTF8.GetBytes(str) 时,我得到一个 utf 字节数组。

如何将这些字节转换为我所追求的字符串表示形式?

--

感谢您指出没有 utf8 字符串的字符串表示形式。

为了澄清我的需求,我必须在 sql 2008 中执行类似的操作:

xmlAuditoria_Alta 
'
<Out>utf8 char: á</Out>
'

这是我迄今为止发现的唯一方法,可以让这个存储的程序正确保存值

utf8 char: á

这就是我尝试从á 转换为á 的原因

也许有更正确的方法来做到这一点

【问题讨论】:

  • 没有“UTF 字符串表示”之类的东西。 á 是当您错误地将 UTF8 字节解析为单字节编码时会发生的情况。 你不应该这样做
  • 请使用适当的 API 来处理 XML...
  • 对于它的价值,从表面上看,你的问题的答案是:Encoding _1252 = new Encoding(1252); // or whatever single byte encoding you desire byte[] utf8 = Encoding.UTF8.GetBytes(str); string mangledStr = _1252.GetString(utf8); 但我很肯定你不想这样做!

标签: c# string utf-8


【解决方案1】:

您的问题基于错误的前提。

<Root>á</Root>

不是字符串的 UTF-8 表示形式。实际上,该字符串是在其他一些单字节 8 位字符集中重新解释的 UTF-8 字节。

如果您想将 C# 字符串转换为 UTF-8,那么您确实可以这样写:

Encoding.UTF8.GetBytes(str)

【讨论】:

  • +1。 XML 的默认编码也已经是 UTF-8,因此很有可能只需将 XML 保存到流中就会产生预期的结果(而不是直接的字符串操作)。
猜你喜欢
  • 2015-09-04
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
相关资源
最近更新 更多