在RoR中,如何使用utf8代码验证中文或日语单词的发布表单.
在GBK代码中,它使用[\ u4e00-\u9fa5] +来验证中文单词.在Php中,它使用/ ^ [\ x {4e00} - \x {9}} + $/u来表示utf-8页面.
Ruby 1.8对UTF-8字符串的支持很差.您需要在正则表达式中单独编写字节,而不是完整代码:
>> "acentuação".scan(/\xC3\xA7/) => ["ç"]
要匹配您指定的范围,表达式将变得有点复杂:
/([\x4E-\x9E][\x00-\xFF])|(\x9F[\x00-\xA5])/ # (untested)
不过,这将在Ruby 1.9中得到改进.
编辑:如评论中所述,unicode字符\ u4E00-\u9FA5仅映射到UTF16-BE编码中的上述表达式.UTF8编码可能不同.因此,您需要仔细分析映射,看看是否可以为Ruby 1.8提供字节匹配表达式.