Rails JSON非标准字符

时间:2013-11-21 18:00:05

标签: jquery ruby-on-rails json ruby-on-rails-2

我的数据库中有一个包含此示例子字符串的字符串。

string = "\357\277\275\357\277\275"

当我尝试将其转换为JSON时,我会遇到很多这些坏男孩(因为他们是非ASCII字符)。

然后,当jQuery尝试解析JSON时,它只是疯了,给了我一个SyntaxError: Unexpected Token

以下是三种可能的解决方案。

  1. 将字符串转换为JSON可接受的值
  2. 删除有问题的字符
  3. 将字符串替换为“无效字符”
  4. 等消息

    我对这些中的任何一个都很好,但不知道如何去做。想法?

2 个答案:

答案 0 :(得分:0)

"\357\277\275"是替换字符(�)的ascii八进制表示。这表明当您转换为JSON时,字符串中存在非ascii字符。理想情况下,您可能希望识别非ascii字符如何进入您的数据上游,但简单的解决方法是删除它们:

clean_string = "absr\357\277\275/xyz".gsub("\357\277\275","")
  #=> "absr/xyz"

答案 1 :(得分:0)

为了从Ruby中的字符串中去除不可打印的字符,可以使用以下正则表达式。

"your_string".gsub!(/[^[:print:]]/, '')