【问题标题】:UTF-8 Encoding a string with double Quotes in C#在 C# 中使用双引号对字符串进行 UTF-8 编码
【发布时间】:2012-06-13 08:39:52
【问题描述】:
StringBuilder request = new StringBuilder();
request.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

byte[] msg;
string decoded;

msg=System.Text.Encoding.UTF8.GetBytes(request.ToString());
decoded = System.Text.Encoding.UTF8.GetString(msg);

解码为&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;

结果有\" 我的问题是如何用引号对消息进行编码,并且在 decdoing 之后仍然得到没有\" 的字符串 如果我使用 AppendLine 结果也有\r\n

【问题讨论】:

  • 你在哪里看结果?在 Visual Studio 调试模式下?如果是这种情况,请放心 => 实际字符串中没有 \"。它是字符串的调试器表示。话虽如此,使用 StringBuilder 来操作 XML 可能是您能做的最糟糕的事情之一。 XML 只能使用 XML 解析器进行操作。
  • 谢谢,是的,我正在查看调试器,因为这只是一条消息,我将发送我不是 XML 解析器..但我会调查一下谢谢

标签: c# encoding utf8-decode


【解决方案1】:

您在调试器中查看字符串吗?如果是这样,它将显示字符串,就好像它是 C# 中的字符串文字一样。 \ 并不存在。您可以轻松验证是否在某处输出字符串。

【讨论】:

    【解决方案2】:

    @joey 的答案是正确的 - 但由于 XML 支持单引号,您可以使用它来代替 - 我觉得阅读起来更简洁:

    request.Append("<?xml version='1.0' encoding='UTF-8'"?>");
    

    【讨论】:

    • request.Append(@"");相同的结果 request.Append(@""); 如果我执行 AppendLine 我仍然在调试器中看到 /r/n。
    猜你喜欢
    • 2011-02-27
    • 2018-01-03
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    相关资源
    最近更新 更多