Rails JSON нестандартные символы

0

У меня есть строка в моей базе данных, которая содержит эту подстроку.

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

Когда я пытаюсь преобразовать это в JSON, я получаю много этих плохих мальчиков (поскольку они не являются символами ASCII).

Затем, когда jQuery пытается разобрать JSON, он просто дерьмовыдает и дает мне SyntaxError: Unexpected Token

Вот три возможных решения.

  1. Преобразование строки в допустимые значения JSON
  2. Удалить нарушающие символы
  3. Замените строку сообщением, например "Недопустимые символы",

Я в порядке с любым из них, но не знаю, как им обойти. Мысли?

Теги:
ruby-on-rails-2

2 ответа

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
    Джош. Это не вопрос удаления их из потока, они должны быть в базе данных. Мне просто нужен способ идентифицировать и удалить их. Ваше решение хорошо, но работает только в одном конкретном случае. Я обновил свой вопрос, сказав, что приведенный выше пример значений не-ASCII в моей базе данных. Мне нужен общий подход, а конкретный.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню