【问题标题】:What characters are html encoded?什么字符是html编码的?
【发布时间】:2013-03-07 22:24:17
【问题描述】:

TL;DR Düsseldor 被编码为 Düsseldor,Düsseldorf 没有被编码(默认 MVC 编码)为什么?

我正在构建一个具有肥皂访问权限的 api。当我收到请求时,我对所有数据进行 html 编码。 就在我结束当前请求之前,我复制了 Response.Stream 并将其保存以进行日志记录。

我注意到杜塞尔多夫被我的 api 编码为“Düsseldorf”。这是意料之中的。 但在我的日志中,它显示杜塞尔多夫编码为“Düsseldorf”(双重编码)我的日志在 MVC 序列化写入响应流后保存。

我认为这是因为 soap 在通过网络发送值之前对其进行编码。

所以我的下一个测试是在我的 api 中关闭 html 编码。 所以这次杜塞尔多夫给了肥皂序列化器。

但它被编码为杜塞尔多夫?

编辑:当我说我打开/关闭编码时,我的意思是请求中的每个字段我使用 HttpUtility.HtmlEncode("some field")。并将其保存到数据库中。然后我用 MVC 视图返回数据,如下所示:

public ActionResult CreateAccessCode ( CreateAccessCodeRequest request )
{
    var response = new Response (request);
    return new ContentResult (response);
}

我的问题是当 ContentResult 方法运行时,它似乎做了一些自己的编码,我想知道那是什么?

【问题讨论】:

  • 你的问题有点混乱。如果您禁用了 html 编码,那不是预期的结果吗?另外,当您关闭 html 编码时,您的日志中有什么内容?

标签: c# soap


【解决方案1】:

SOAP 使用 XML - HTML 和 XML 需要稍微不同的编码,但在您的情况下它可能是也可能不是问题。

您手动构建的 XML 很可能是不正确的。请不要用字符串连接构造 XML - XDocument/XmlDocument 更适合这种情况。

【讨论】:

  • 如果我记忆力好,我记得使用 XmlDocument 类,并添加子项/值,获取应用编码的文档。尝试使用System.Xml.XmlDocument
  • 我没有手动创建 xml。我使用内置的 .net 方法
  • @user1909158 鉴于“我使用内置的 .net 方法(使用 XML)”,您的声明“我对所有数据进行 html 编码”听起来不正确。您可能应该使用示例文本/代码更新您的问题,以便清楚您有什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 2013-07-06
  • 2015-11-09
  • 1970-01-01
相关资源
最近更新 更多