编码 UTF-8-BOM Ruby

问题描述 投票:0回答:2

我正在尝试识别 Ruby 中的文件编码。

file = File.open("filePath", "rw");
file.encoding;

但是即使我的文件采用这种编码,我也无法获得 UTF-8-BOM 编码。我得到了所有内容,但没有得到 UTF-8-BOM。 ruby 可能不支持 UTF-8-BOM 编码吗?我不需要打开或读取文件,但需要识别其编码类型。

ruby encoding
2个回答
2
投票

“UTF-8-BOM”编码是什么意思?事实上,它是一种普通的老式“UTF-8”编码,只是前面加上了字节顺序标记 (

EF BB BF
。) BOM 对 UTF-8 没有影响。不建议在 UTF-8 中使用 BOM。总结:不存在这样的编码,有字节顺序标记应该有助于识别编码的字节序

File.open

 是通用流读取器,它不建议任何内容,它可能会被告知使用显式编码(对于单字节编码有用),并且它可能会根据 BOM 确定编码的字节顺序(对于单字节编码有用)用于固定宽度的 unicode 编码。)

如果您想检查文件是否有 BOM,请从中读取 3 个字节并将它们与

EF BB BF

 进行比较。


0
投票
试试这个

# read content form old file original_content = File.read(file_path) # define UTF-8 BOM bom = "\xEF\xBB\xBF" # new file,add BOM in the head of content File.open(new_file_path, "w:UTF-8") do |file| file.write(bom + original_content) end
    
© www.soinside.com 2019 - 2024. All rights reserved.