Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby 1.8和UTF-8字符串大小写语句比较_Ruby On Rails_Ruby_Utf 8_Ruby 1.8 - Fatal编程技术网

Ruby on rails Ruby 1.8和UTF-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

我有一个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
   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不依赖于字节顺序。有关详细信息,请参阅