У меня есть этот хэш:Почему xF3 не распознается как UTF-8
a={"topic_id"=>60693, "urlkey"=>"innovacion", "name"=>"Innovaci\xF3n"}
и я пытаюсь сохранить его в MongoDB используя Mongoid, когда я получаю эту ошибку:
BSON::InvalidStringEncoding: String not valid UTF-8
Я затем пытается gsub
его:
a["name"].gsub(/\xF3/,"o")
и я получаю: SyntaxError: (pry):12: too short escaped multibyte character: /\xF3/
Я добавил волшебный комментарий в начале моей модели файла: # encoding: UTF-8
Я думаю, что mongo/bson все равно отклонит недействительный utf8, хотя –
Как полагает @FrederickCheung, он действительно отклонен монго. Однако я придумал это: '' 'a.force_encoding (" BINARY "). Gsub (0xF3.chr," ")' '', который отлично работает. Тем не менее, я не могу найти способ выразить его с помощью Regexp, так как я не могу использовать метод после выражения: '' 'a.force_encoding (« BINARY »). Gsub (/ 0x ....? /. Chr, "") '' 'вызывает ошибку:' '' NoMethodError: undefined method 'chr 'для/0x ....? /: Regexp''' – Cacofonix
Для записи мне удалось преодолеть проблему недопустимого UTF -8 char '' 'unpack (" C * "). Pack (" U * ")' '' строка, о которой идет речь ... – Cacofonix