我有一个Rake任务(在lib / tasks目录中),我在共享的虚拟主机上使用cron运行。问题是我想使用案例陈述来比较UTF-8字符串,但我的源代码不是UTF-8编码的。如果我将源代码保存为UTF-8,则在尝试启动它时会出错:(
我该怎么办?
可以从外部UTF-8 txt文件读取这个字符串吗?
P.S。我正在使用Ruby 1.8
P.S。我的意思是这样比较:
result = case utf8string
when 'АБВ': 1
when 'ГДИ': 2
when 'ЙКЛ': 3
when 'МНО': 4
else 5
end
答案 0 :(得分:2)
我发现我的问题不是法案
问题在于,当我以UTF-8格式保存源代码时,我的文本编辑器在开头添加3个字节(BOM),表示编码为UTF-8。
问:什么是BOM?
A:字节顺序标记(BOM)由字符代码组成 U + FEFF位于数据流的开头,可用作数据流 定义字节顺序和编码形式的签名,主要是未标记的 明文文件。在某些更高级别的协议下,可以使用BOM 在该协议中定义的Unicode数据流中强制(或禁止)。
我得到的错误是:
1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression
答案 1 :(得分:1)
我说你需要更改文本编辑器,因为UTF-8需要 。 UTF-8不依赖于字节顺序。有关详细信息,请参阅link text。
答案 2 :(得分:0)
尝试使用Rails'ActiveSupport框架中的mb_chars
方法:
result = case utf8string.mb_chars
when 'АБВ': 1
when 'ГДИ': 2
when 'ЙКЛ': 3
when 'МНО': 4
else 5
end