Исключение неконвертируемых символов при изменении кодировки с UTF-8 на Shift_JIS с ruby ​​1.9 - PullRequest
0 голосов
/ 09 ноября 2011

Мне нужно написать программу экспорта CVS, которая внутренне использует кодировку UTF-8, которая возникла из пользовательского ввода через Интернет (так что вы можете ожидать любые символы).Это японская система, поэтому мне нужно кодировать в Shift_JIS.

Теперь, когда я изменяю UTF-8 на Shift_JIS, я получаю сообщения об ошибках типа:

Encoding::UndefinedConversionError (U+7E6B from UTF-8 to Shift_JIS):

Я хочу либо а) устранитьсимвол, или б) сопоставить символ с каким-либо другим символом (или просто со строкой '(U + 7E6B)')

Кажется, перехватите исключение и удалите его как строку байтов, но должен быть более простой способсделать это.

Каков наилучший способ сделать это преобразование?

1 Ответ

1 голос
/ 04 марта 2012

[Преобразование моих последующих комментариев в вопрос в ответ]

Я обнаружил, что кодирование имеет опцию, и я могу дать кодирование с помощью

:undef=>true, # for UndefinedConversionError :replace=>"?"

, чтобы получить желаемый эффект.также можно указать следующее:

:invalid=>true, # for InvalidByteSequenceError
...