【问题标题】:Eliminating non-convertable characters on encoding change from UTF-8 to Shift_JIS with ruby 1.9使用 ruby​​ 1.9 消除编码从 UTF-8 更改为 Shift JIS 时的不可转换字符
【发布时间】: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


【解决方案1】:

[将我的后续 cmet 转换为问题到答案]

我发现 encode 有选项,我可以给 encode with

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

达到预期效果。还可以指定以下内容:

:invalid=>true, # for InvalidByteSequenceError

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 2014-05-02
    • 2021-05-29
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多