【问题标题】:HTML encoding ° degree symbol extra spaceHTML编码°度符号额外空格
【发布时间】:2011-04-18 00:48:17
【问题描述】:
  1. <div id="a">°F</div>
  2. $.get("http://blah.com/go",{'TU':$('#a').text()});
  3. IIS 服务器日志显示以下参数:
    99.5% 的时间:TU=%C2%B0F
    0.5% 的时间:TU=%C2%B0+F
  4. 服务器随后崩溃,因为它不知道“° F”是什么。不可否认,缺陷之一是我们从 DOM 中抓取文本并将其发送到我们的服务器。这是我怀疑问题所在,但我想了解更多。

其他信息:0.5% 的时间是 IE8 和 Chrome。所有 IP 的地理位置都位于哥伦比亚,这使它看起来像是一个本地问题,但我们无法复制它。

想法??

【问题讨论】:

    标签: javascript html encoding localization internationalization


    【解决方案1】:

    文本是如何放入 div 的?您应该在检查服务器值之前输出它。我认为您不太可能获得相同文本的不同编码。这可能与您将其放入页面的方式有关。

    还可以在获取查询字符串之前尝试在服务器上设置页面编码,这可能是不同的浏览器使用不同的编码。 UTF-8 是 w3.org 建议的编码。在 Java 中,您必须确保在调用任何从客户端读取任何内容之前设置编码。

    【讨论】:

      【解决方案2】:

      所以问题是有时°F 之间有一个空格,那个空格被翻译成+,而服务器不接受它?如果是这样,为什么不在发送之前去掉空间?

      $.get("http://blah.com/go",{'TU':$('#a').text().replace(' ', '')});
      // Or a more granular fix
      $.get("http://blah.com/go",{'TU':$('#a').text().replace(/°\sF/, '°F')});
      

      【讨论】:

      • 是的。我也可以在服务中做到这一点。我更好奇空间的来源和来源。
      猜你喜欢
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2016-02-25
      相关资源
      最近更新 更多