红宝石1.8和UTF-8字符串case语句比较
-
20-08-2019 - |
题
我有一个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数据流中
,我得到错误是:
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
不隶属于 StackOverflow