我有一个Rake任务(在LIB /任务目录),我用的cron我的共享虚拟主机上运行。问题是,我想使用情况statment来比较UTF-8字符串,但我的源代码是不是UTF-8编码。如果我保存的源代码为UTF-8存在错误,当我尝试启动它:(

我有什么关系?

可以被读取从外部UTF-8 txt文件此字符串?

P.S。我使用红宝石1.8

P.S。我的意思是比较是这样的:

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

解决方案

我说你需要改变你的文本编辑器BOM是的的需要UTF-8。 UTF-8是不字节顺序相关的。请参阅对于细节链接文本

其他提示

我发现我的问题是不是在壳体statment

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

  

问:什么是BOM

     

:一种字节顺序标记(BOM)由字符码的   U + FEFF在一个数据流中,在那里它可以被用作一开头   签名定义的字节顺序和编码主要的未标记形式,   纯文本文件。在某些更高级别的协议,使用BOM的可能   强制性的(或禁止的)在该协议中定义的Unicode数据流中

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top