【发布时间】:2011-11-09 07:17:17
【问题描述】:
我需要编写一个 CVS 导出程序,它在内部使用源自用户通过网络输入的 UTF-8 编码(因此您可以期待任何字符)。这是日文系统,所以我需要编码为 Shift_JIS。
现在,当我将 UTF-8 更改为 Shift_JIS 时,出现如下错误:
Encoding::UndefinedConversionError (U+7E6B from UTF-8 to Shift_JIS):
我想要 a) 消除角色,或者 b) 将角色映射到其他角色 (或者简单地说,字符串 '(U+7E6B)')
似乎捕获了异常并将其作为字节字符串消除,但必须有更简单的方法来做到这一点。
进行这种转换的最佳方法是什么?
【问题讨论】:
-
我发现 encode 有选项,我可以用 :undef=>true, # for UndefinedConversionError :replace=>"?达到预期的效果。也可以指定以下内容::invalid=>true, # for InvalidByteSequenceError
标签: character-encoding ruby-1.9