2013-11-21 71 views
0

我的数据库中有一个字符串,它包含此示例子字符串。Rails JSON非标准字符

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

当我试图将其转换为JSON时,我得到了很多这些坏男孩(因为它们是非ASCII字符)。

然后,当jQuery的试图解析JSON,它只是胡扯出来,给了我一个SyntaxError: Unexpected Token

这里有三种可能的解决方案。

  1. 转换串入JSON可接受值
  2. 卸下有问题的字符
  3. 替换的消息的字符串,如“无效字符”

我很好的任何的这些,而是不知道如何去解决它们。思考?

回答

0

为了剥去在Ruby中的字符串不可打印的字符,你可以使用遵循正则表达式。

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

"\357\277\275"是替换字符( )的ascii八进制表示。这表示当您转换为JSON时,字符串中有非ascii字符。理想情况下,你会想身份非ASCII字符是如何进入你的数据上游,但简单的解决方法是只删除它们:

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

Josh。这不是从流中删除它们的问题,它们实际上应该在数据库中。我简单需要一种方法来识别和删除它们。您的解决方案很好,但只适用于一个特定情况。我更新了我的问题,说上面是我的数据库中的非ASCII值的* sample *。我需要的是一种通用的方法,而这是一个特定的方法。 – screenmutt