Ruby:如何将潜在的unicode字符串分解为字节

我正在编写一个用户输入并在屏幕上呈现它的游戏。 我正在使用的引擎完全是unicode友好的,所以如果可能的话,我想保留它。 问题是渲染循环如下所示:

"string".each_byte do |c| render_this_letter(c) end 

我对i18n了解不多,但我知道上面的代码只会对我和说我的语言的人有用。 我更喜欢这样的东西:

 "unicode string".each_unicode_letter do |u| render_unicode_letter(u) end 

这是否存在于核心分发中? 我有点厌恶为安装添加额外的要求,但如果这是唯一的方法,我会活着。

为了额外的乐趣,我无法知道字符串实际上是否是一个unicode字符串。

编辑:我正在使用的库确实可以渲染整个字符串,但是我让用户编辑动态出现的内容 – 如果它们点击’退格’,基本上,我需要知道要删除多少字节。

不幸的是,ruby 1.8.x的unicode支持很差。 它在1.9中得到解决。 但与此同时,像这样的图书馆( http://snippets.dzone.com/posts/show/4527 )是一个很好的解决方案。 使用链接库,您的代码看起来像这样:

 "unicode_string".each_utf8_char do |u| render_unicode_letter(u) end 

您可以尝试从rails代码库中包含ActiveSupport :: CoreExtensions :: String :: Unicode模块。