Rails ActiveRecord: вставка текста, содержащего непечатные / странные символы - PullRequest
0 голосов
/ 23 марта 2009

Я вставляю некоторый текст из очищенной сети в мою базу данных. некоторые поля в строке содержат непечатаемые / странные символы. Например,

if text is "C__O__?__P__L__E__T__E", 
then the text in the database is stored only as "C__O__"

Я знаю о h (), strip_tags () ... sanitize, ... и т. Д. И т. Д. Но я не хочу санировать этот SQL. Activerecord правильно регистрирует SQL, и при запуске в phpMySQL запрос выполняется правильно. что-то происходит между генерацией SQL-запроса и его выполнением.

Помощь очень ценится.

Ответы [ 4 ]

1 голос
/ 23 марта 2009

Просто замените знак вопроса в строке на строку, содержащую знак вопроса, другого способа я тоже не нашел:

["C__O __? __ P__L__E__T__E", '?']

отлично работает.

0 голосов
/ 07 ноября 2009

Я знаю, что это слишком поздно, но я столкнулся с той же проблемой, когда мы пытались обработать файл как UTF-8, который фактически использовал кодировку ISO-8859-1. Я подозреваю, что у вас была похожая проблема в процессе очистки, когда вы допустили неправильную кодировку, и это привело к сбоям в работе.

0 голосов
/ 23 марта 2009

Можете ли вы избежать знака вопроса, используя "\?"?

0 голосов
/ 23 марта 2009

Хмммм ... используя CGI escape, я обнаружил, что персонаж, приходящий в систему, не тот, кем я ожидал. Это не знак вопроса (% 3F), а знак вопроса (% D5).

C__%D5__M__P__L__%80___T__%80__
C__%3F__M__P__L__%3F___T__%3F__

В конце концов я выдал непечатные символы перед сохранением.

gsub(/[^[:print:]]/, '')

Только после удаления недопустимых символов в моей строке я смог правильно сохранить элемент. Ни одно из других решений не сработало, отчасти потому, что проблема не была четко понята заранее.

...