在Ruby中处理非英语字符的最佳实践?

在Ruby中处理非英语字符的最佳实践?,ruby,character-encoding,Ruby,Character Encoding,我的程序文件是用UTF-8编码的,所以“abc”.length==3,但“åäö”.length==6。我意识到å、ä、ö等在UTF-8中存储为两个字节,Ruby字符串是一个字节序列(不是字符),但这很烦人!是否有解决此问题的最佳做法?只需在文件顶部添加以下命令: # -*- encoding: utf-8 -*- 希望这有帮助。只需在文件顶部添加以下命令: # -*- encoding: utf-8 -*- 希望这有帮助。您可以使用ruby1.9 $ ruby1.8 -e 'puts "å

我的程序文件是用UTF-8编码的,所以
“abc”.length==3
,但
“åäö”.length==6
。我意识到å、ä、ö等在UTF-8中存储为两个字节,Ruby字符串是一个字节序列(不是字符),但这很烦人!是否有解决此问题的最佳做法?

只需在文件顶部添加以下命令:

# -*- encoding: utf-8 -*-

希望这有帮助。

只需在文件顶部添加以下命令:

# -*- encoding: utf-8 -*-
希望这有帮助。

您可以使用ruby1.9

$ ruby1.8 -e 'puts "åäö".length'
6
$ ruby1.9 -e 'puts "åäö".length'
3
您可以使用ruby1.9

$ ruby1.8 -e 'puts "åäö".length'
6
$ ruby1.9 -e 'puts "åäö".length'
3

谢谢,但我仍然得到了“åäö”。length==6谢谢,但我仍然得到了“åäö”。length==6您仍然可以使用$KCODE='u'使用ruby 1.8;需要“jcode”;a“åäö”.jlength#=>3谢谢,你的评论对所有没有升级到1.9的人都非常有价值。(升级后,我还了解到,我可以在调用ruby解释器时提交一个开关(-e左右)您仍然可以使用$KCODE='u'使用ruby 1.8;需要“jcode”;a“åäö”.jlength#=>3谢谢,你的评论对所有没有升级到1.9的人都非常有价值。(升级后,我还了解到,在调用ruby解释器时,我可以提交一个开关(-e左右)