textAngular在服务器JSON解析期间在输入中使用时清理输出抛出错误

时间:2016-02-26 20:39:34

标签: javascript json character-encoding escaping textangular

我有两个Javascript字符串,当传递到console.log时,会从console.log提供完全相同的输出,但是当我通过HTTP POST将它们传递给使用SpringMVC的基于Java Jetty的REST API时,Jackson JSON解析库会抛出一个错误并使服务器返回第二个但不是第一个的状态代码。

这两个字符串都是使用浏览器中的textAngular工具生成的,当点击切换html /富文本按钮编辑html时,两个字符串之间的唯一区别是在被textAngular清理之前,其中一个包含一个“& nbsp;”在html中,另一个包含一个常规空格“”:

<p>Howdy </p>

VS

<p>Howdy&nbsp;</p>

其中第二个是失败的那个。但是传递到服务器之前的每个字符串都由textAngular清理,因此输出看起来相同。来自console.log的字符串输出的两个已清理版本都是:

<p>Howdy </p>

因此它们应该被视为相同:要么都抛出错误要么两者都通过。

console.log是否对实际的字符串变量进行了自己的清理?或者是否有一个不同的字符编码用于两个字符串中的空格字符,console.log自动从?

转换
  1. 我如何验证我的预感,即textAngular的输出字符串是否对空格字符使用不同的字符编码?
  2. 如果出现问题,我如何解决实际问题并确保输出字符串共享相同的字符编码。
  3. 更新 我尝试在字符串上使用以下内容:

    console.log(html.charCodeAt(8))
    

    第一个字符串返回32,第二个字符串返回160,因此它们的二进制表示实际上是不同的。我想我可以编写自己的清洁剂,将这个特定的空间编码转换为另一个,但是我担心可能会有其他边缘情况,例如不同的字符。我想知道是否有更好的解决方案强制整个字符串进入正确的字符编码。

1 个答案:

答案 0 :(得分:0)

我的解决方案是在提交帖子之前添加自己的清理功能:

html.replace('\xa0', '&nbsp;');

其中&#39; \ xa0&#39;是160(非中断空格)的十六进制编码。这似乎满足了服务器的JSON解析器;虽然我有兴趣看看textAngular的消毒剂是否存在相关的字符编码问题,以及可能更全面的解决方案。