Ruby 1.8和UTF-8字符串case语句比较

我有一个Rake任务(在lib / tasks目录中),我在共享的Web托管上使用cron运行。 问题是我想使用案例陈述来比较UTF-8字符串,但我的源代码不是UTF-8编码的。 如果我将源代码保存为UTF-8,当我尝试启动它时会出错:(

我该怎么办?

可以从外部UTF-8 txt文件中读取这个字符串吗?

PS我正在使用Ruby 1.8

PS我的意思是这样比较:

result = case utf8string when 'АБВ': 1 when 'ГДИ': 2 when 'ЙКЛ': 3 when 'МНО': 4 else 5 end 

我想你需要更改文本编辑器,因为UTF-8不需要BOM。 UTF-8不依赖于字节顺序。 有关详情,请参阅链接文本

我发现我的问题不是以防万一

问题是当我以UTF-8格式保存我的源代码时,我的文本编辑器在开头添加3个字节(BOM)以指示编码是UTF-8。

问:什么是BOM?

答:字节顺序标记(BOM)由数据流开头的字符代码U + FEFF组成,它可以用作定义字节顺序和编码forms的签名,主要是未标记的明文文件。 在某些更高级别的协议下,在该协议中定义的Unicode数据流中可能必须(或禁止)使用BOM。

UTF-8,UTF-16,UTF-32和BOM

我得到的错误是:

 1: Invalid char `\357' in expression 1: Invalid char `\273' in expression 1: Invalid char `\277' in expression 

尝试使用Rails的ActiveSupport框架中的mb_chars方法:

 result = case utf8string.mb_chars when 'АБВ': 1 when 'ГДИ': 2 when 'ЙКЛ': 3 when 'МНО': 4 else 5 end