2013-11-21 72 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