Почему ActiveRecord и / или MySQL имеют проблемы с этим символом? - PullRequest
0 голосов
/ 01 сентября 2011

Когда я вставляю определенные строки, поступающие от вызовов API, в мою базу данных, они обрезаются для определенных символов.Это с ruby ​​1.8.7.У меня все установлено в utf8 приложения и в MySQL.Обычно у меня нет проблем с вводом содержимого utf8 в БД в других частях приложения.

Предполагается, что это "El Soldado y La Muñeca".Если я вставлю его в БД, то только из этого получится: «11 El Soldado y La Mu».

>> name
=> "11 El Soldado y La Mu?eca(1).mp3"
>> name[20..20]
=> "u"
>> name[21..21]
=> "\361"
>> name[22..22]
=> "e"
  1. это символ utf8?
  2. я знаю, чтоruby 1.8 не знает кодировку, но, честно говоря, я всегда забываю, как это должно повлиять на меня - я всегда просто устанавливаю все на всех остальных уровнях на utf8, и все в порядке.ПОЧЕМУ ЭТО НЕ РАБОТАЕТ СЕЙЧАС?

обновление

ИСПРАВЛЕНИЕ - я был не прав, это не из API, а из файловой системы.

неправильно закодированный символ исходит из внутри дома !

новый вопрос: Как я могу получить utf8 символов из файла #путь

1 Ответ

2 голосов
/ 01 сентября 2011

Вы как-то получаете Latin-1 (AKA ISO-8859-1) ñ, а не UTF-8 ñ.В латинице 1 ñ - это 361 в восьмеричном виде (следовательно, ваш единственный байт "\361").В UTF-8 нижний регистр тильды-n должен быть \303\261 (т. Е. Байты 0303 и 0261 в восьмеричном или 0xc3 и 0xb1 в шестнадцатеричном).

Возможно, вам придется начать играть с Iconv в Ruby, чтобы убедиться, что вы получаете все в UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...