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

标签 ruby unicode utf-8

我正在编写一款接受用户输入并将其呈现在屏幕上的游戏。我为此使用的引擎是完全 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

关于Ruby:如何将潜在的 unicode 字符串分解为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/144380/

相关文章:

c# - 如何在 WPF 中从 UTF-8 字符串编码为\解码?

c++ - 如何获取 QT 主函数 argv 参数作为 unicode 编码格式

html - 使网页上的每个 Unicode 字符具有相同的宽度

c++ - TagLib - 如何处理 UTF-8 编码的文件路径?

ios - 在 QLPreviewController 中使用元音符号查看 UTF-8 编码的 CSV 文件时出现问题

ruby - 使用 Ruby Mechanize 时 stub 测试

java - 在 Java 中打印数学符号给出错误的输出

ruby - 为什么这个正则表达式匹配/\w+[^(]/?

ruby - Ruby 是否有正式的规范(如 Java 语言规范 (JLS))?

ruby - 如何重构两个循环以在 Ruby 中使用一个方法