ruby从任何编码到ascii

时间:2011-02-22 21:48:24

标签: ruby encoding

我必须主要处理英文字母和所有标点符号,我不必担心欧洲口音。因此我唯一担心的是当用户粘贴他从网上复制的内容时,包括例如撇号,当我在控制台中放入(在Win7上)时,它会输出

“ItΓÇÖs”#实际上它就是“它是”

所以我的主要问题是,是否有一种可以在Ruby中使用的全部转换方法,只需用ASCII计数器部件正确替换所有的。;?!“'〜`_-?

我对编码的了解很少,如果你认为这是一个错误的问题,很可能就是这种情况,请对我应该寻找的内容提出建议。

谢谢

3 个答案:

答案 0 :(得分:6)

我在出版工作中经常处理这个问题。 stringex https://github.com/rsl/stringex取得了成功。他们有一个to_ascii方法来规范化unicode破折号等。

答案 1 :(得分:1)

以编程方式处理多字节编码iconv是您的朋友。而且,詹姆斯格雷写了一系列blog articles谈论如何分解问题并转换编码。

在处理已粘贴的文本时问题变得更加复杂,因为某些字符可能是一个多字节编码,而其他字符可能是另一个字符。您可能必须遍历字符串检查多字节字符,然后询问Ruby编码是什么,并且,如果它不是您期望的,将其转换为预期或期望的编码,然后移动到下一个字符。格雷的文章很好地涵盖了所有内容并且阅读良好。

答案 2 :(得分:1)

在ruby 2.0中:

"ItΓÇÖs".encode("ASCII", invalid: :replace, undef: :replace, replace: '')
 => "Its"