我正在编写一个用户输入并在屏幕上呈现的游戏。我正在使用的引擎完全是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字符串。
编辑:我正在使用的库确实可以呈现整个字符串,但是我让用户编辑动态出现的内容 - 如果它们点击'退格',基本上,我需要知道要切多少字节结束。答案 0 :(得分:2)
不幸的是,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
答案 1 :(得分:2)
您可以尝试在rails代码库中包含ActiveSupport::CoreExtensions::String::Unicode模块。