现在有哪些选项可以在Ruby和RoR中实现UTF8?
密切关注Ruby的开发,我了解到详细的字符编码是在Ruby 1.9中实现的。我现在的问题是:目前该如何使用Ruby与将所有数据存储在UTF8中的数据库进行通信?
背景:我参与了一个至少可以选择Ruby / RoR的新项目。但是该项目需要依赖国际化的字符集(遍及许多国家),最好是UTF8.
那么我们如何处理呢?提前致谢。
解决方案
尽管我尚未对其进行测试,但是字符编码库(当前在Alpha中)将方法添加到String类中以处理UTF-8等。它在RubyForge上的页面在这里。它是为Ruby 1.8设计的。
但是,根据我的经验,使用Ruby 1.8,如果将数据以UTF-8格式存储在数据库中,则只要HTTP标头中的字符编码为UTF-8,Ruby都不会妨碍我们。它可能无法在字符串上进行操作,但不会破坏任何内容。例子:
file.txt: ?Hola! ?Como estás? Leí el artículo. ?Fue muy excellente!
请原谅我可怜的西班牙语;这是我能想到的Unicode最好的例子。
in irb: str = File.read("file.txt") => "21Hola! 27Como est31s? Le35 el art35culo. 21Fue muy excellente!\n" str += "Foo is equal to bar." => "21Hola! 27Como est31s? Le35 el art35culo. 21Fue muy excellente!\nFoo is equal to bar." str = " " + str + " " => " 21Hola! 27Como est31s? Le35 el art35culo. 21Fue muy excellente!\nFoo is equal to bar. " str.strip => "21Hola! 27Como est31s? Le35 el art35culo. 21Fue muy excellente!\nFoo is equal to bar."
基本上,它只会将UTF-8视为ASCII码,且其中包含奇数字符。如果代码点乱序,则不会按字母顺序排序;但是,它将按代码点排序。例子:
"2" <=> "1" => -1
无论如何,我们打算对Rails应用程序中的数据进行多少操作?大多数排序等通常是由数据库引擎完成的。
Ruby 1.8与UTF-8字符串配合使用时,可以很好地进行字符串的基本操作。根据应用程序的需要,某些操作将无法正常工作或者无法正常工作。
例如:
1)字符串的大小将为我们提供字节,而不是字符,因为还没有多字节支持。但是,我们是否需要知道字符串的大小(以字符为单位)?
2)不能在字符边界处分割字符串。但是你需要这个吗?等等。
3)如果使用Ruby进行排序,排序顺序将很时髦。使用db进行排序的建议是一个好主意。
等等。
在从db中读取后,对发帖人的有关对数据进行排序的评论:如前所述,结果可能与用户的期望不符。因此,解决方案是对数据库进行排序。无论如何,它通常会更快—数据库是专为对数据进行排序而设计的。
简介:我的Ruby 1.8.6 RoR应用程序可以与国际Unicode字符配合使用,并将其作为UTF-8处理并存储在现代浏览器中。从右到左的语言也可以正常工作。主要问题:确保数据库和所有网页都设置为使用UTF-8. 如果数据库中已经有一些数据,则需要完成转换过程以将其更改为UTF-8.
问候,
拉里
" Unicode太好了!尽管Rails一直能够存储和显示Unicode,而且没有牛肉,但截断,反转或者获得UTF-8字符串的确切长度要复杂一些。我们需要自己弄乱KCODE。尽管有很多人使它起作用,但它并非像我们希望的那样(甚至可能是预期的)那样轻松地实现即插即用。
因此,由于Ruby直到明年这个时候才支持多字节,因此Rails 1.2引入了ActiveSupport :: Multibyte用于处理Unicode字符串。在字符串上调用chars方法以开始使用字符而不是字节。"单击此处了解更多