消除编码时不可转换的字符从使用ruby 1.9的UTF-8更改为Shift_JIS

时间:2011-11-09 07:17:17

标签: character-encoding ruby-1.9

我需要编写一个CVS导出程序,该程序在内部使用UTF-8编码,该编码源自用户通过Web输入(因此您可以期待任何字符)。它是日语系统所以我需要编码为Shift_JIS。

现在,当我将UTF-8更改为Shift_JIS时,我收到如下错误:

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

我想要a)消除角色,或b)将角色映射到其他角色 (或简单地说,串起'(U + 7E6B)')

似乎捕获异常并将其作为字节字符串消除,但必须有更简单的方法来执行此操作。

进行此转换的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

[将我的后续评论转换为问题答案]

我发现编码有选项,我可以用

进行编码
:undef=>true, # for UndefinedConversionError :replace=>"?"

有所期望的效果。也可以指定以下内容:

:invalid=>true, # for InvalidByteSequenceError