我正在尝试在Ruby中识别文件编码。
file = File.open("filePath", "rw");
file.encoding;
但即使我的文件采用这种编码,我也无法获得UTF-8-BOM编码。我得到的一切都不是UTF-8-BOM。 在ruby中可能不支持UTF-8-BOM编码吗?我不需要打开或读取文件,但要确定其编码类型。
答案 0 :(得分:2)
“UTF-8-BOM”编码是什么意思?事实上,这是一个简单的旧的“UTF-8”编码,只是前缀了字节顺序标记(EF BB BF
。)BOM对UTF-8有无影响。建议不要使用UTF-8中的BOM。总结:没有这样的编码,应该有字节顺序标记来帮助识别编码的字节顺序。< / p>
File.open
是通用流读取器,它没有任何建议,可能会被告知使用显式编码(对单字节编码很有用),它可能会确定编码的字节顺序,基于在BOM上(对于固定宽度的unicode编码很有用。)
如果要检查文件是否包含BOM,请从中读取3个字节,并将其与EF BB BF
进行比较。