Ruby on rails Ruby 1.8和UTF-8字符串大小写语句比较
我有一个Rake任务(在lib/tasks目录中),我在共享的web主机上使用cron运行该任务。问题是我想使用case station比较UTF-8字符串,但我的源代码不是UTF-8编码的。如果将源代码另存为UTF-8,则在尝试启动时会出现错误:( 我该怎么办 可以从外部UTF-8 txt文件读取此字符串吗 另外,我正在使用Ruby 1.8 另外,我的意思是这样比较:Ruby on rails Ruby 1.8和UTF-8字符串大小写语句比较,ruby-on-rails,ruby,utf-8,ruby-1.8,Ruby On Rails,Ruby,Utf 8,Ruby 1.8,我有一个Rake任务(在lib/tasks目录中),我在共享的web主机上使用cron运行该任务。问题是我想使用case station比较UTF-8字符串,但我的源代码不是UTF-8编码的。如果将源代码另存为UTF-8,则在尝试启动时会出现错误:( 我该怎么办 可以从外部UTF-8 txt文件读取此字符串吗 另外,我正在使用Ruby 1.8 另外,我的意思是这样比较: result = case utf8string when 'АБВ': 1 when 'ГДИ': 2 w
result = case utf8string
when 'АБВ': 1
when 'ГДИ': 2
when 'ЙКЛ': 3
when 'МНО': 4
else 5
end
尝试使用Rails框架中的
mb_chars
方法:
result = case utf8string.mb_chars
when 'АБВ': 1
when 'ГДИ': 2
when 'ЙКЛ': 3
when 'МНО': 4
else 5
end
我发现我的问题不在case Station 问题是,当我以UTF-8格式保存源代码时,我的文本编辑器在开头添加了3个字节(BOM),以指示编码是UTF-8 Q:什么是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
我认为您需要更改文本编辑器,因为UTF-8不需要BOM表。UTF-8不依赖于字节顺序。有关详细信息,请参阅