Я хотел бы преобразовать «HELLO» в «HELLO», удалив все специальные символы, которые вызывают проблемы, когда вставлен в базу данных. Они, похоже, не являются частью UTF8.Как бороться с символами, такими как «» в Ruby
Я пытаюсь выяснить Iconv, но я вроде застрял здесь:
str = "A string with " to "A string with "
some_format = "I have no clue what format this is"
Iconv.conv(some_format, 'UTF-8//IGNORE', str)
Делать это:
Iconv.conv('UTF-16', 'UTF-8//IGNORE', str)
... возвращается ...
\376\377\000H\000E\000L\000L\000O?G?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?????\342
Я не хочу конвертировать в нечто иное, чем UTF8, потому что мне приходится иметь дело с арабскими персонажами, китайцами, японцами, корейцами ...
Любая помощь/указатели будут оценены. Я использую Ruby 1.8.7, но мне нужно очень скоро перейти на 1.9.3. Решение, которое работает в обеих ситуациях, лучше всего, но только для 1.9.3 тоже хорошо.
Откуда берутся эти «персонажи»? Если они «не являются частью utf-8» (что я не уверен, даже имеет смысл), какова их кодировка, когда вы их получите? – geoffspear
@Wooble: они исходят от пользовательских входов. Я не уверен, какими они должны быть. Поскольку существует UTF-16, это может иметь смысл http://en.wikipedia.org/wiki/UTF-16 – marcgg
, но UTF-8 и UTF-16 являются просто кодировками набора символов Юникода. Если в юникоде существует глиф, он может быть представлен в любой кодировке. Я предполагаю, что у вас действительно есть не символы, а байты в неизвестной кодировке. Вы должны убедиться, что при вводе данных от пользователя вы знаете, какую кодировку они отправляют. – geoffspear