在 RoR 中,如何使用 utf8 代码验证发布表单中的中文或日文单词。
在 GBK 代码中,使用 [\u4e00-\u9fa5]+ 来验证中文单词。 在 Php 中,对于 utf-8 页面,使用 /^[\x{4e00}-\x{9fa5}]+$/u 进行验证。
在 RoR 中,如何使用 utf8 代码验证发布表单中的中文或日文单词。
在 GBK 代码中,使用 [\u4e00-\u9fa5]+ 来验证中文单词。 在 Php 中,对于 utf-8 页面,使用 /^[\x{4e00}-\x{9fa5}]+$/u 进行验证。
Ruby 1.8对UTF-8字符串的支持较差。您需要在正则表达式中逐个编写字节,而不是完整的代码:
>> "acentuação".scan(/\xC3\xA7/)
=> ["ç"]
/([\x4E-\x9E][\x00-\xFF])|(\x9F[\x00-\xA5])/ # (untested)
编辑:正如评论中所指出的那样,Unicode字符\u4E00-\u9FA5只在UTF16-BE编码中映射到上面的表达式。UTF8编码可能不同。因此,您需要仔细分析映射,并查看是否可以为Ruby 1.8提供匹配字节的表达式。
%r{^[#{"\344\270\200"}-#{"\351\277\277"}]+$}
这实际上是一个正则表达式,其中包含代表U+4E00至U+9FFF范围内最常见的中日文字符的八进制值。
activeSupport有一个UTF-8处理程序
http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Handlers/UTF8Handler.html