这里有详细内容。我有一个包含隐藏 BOM 字符的文件,如下所示
2225612|22225200240|堆栈溢出|帮助开发人员 - 第 1 行 þÿ2225612|22225200240|KIRK|队长 - 第 2 行 2225612|22225200240|感谢þÿ|INADVANCE - 第 3 行
现在我有了处理每一行的脚本。根据我的假设,必须处理第一行,因为它没有任何 BOM 字符。但是,当第二行开始处理时,由于已识别 BOM 字符,因此应该会引发错误。 BOM 字符不仅可以位于行首,还可以位于行中的任何位置。供您引用,突出显示的字符就是 BOM 字符。
当我使用正则表达式 /[^[:print]]/ 和 gsub 时,它会将空格或换行符视为 BOM 字符。我只想检测 BOM 字符。
任何人都可以为此编写脚本吗?提前感谢大家
最佳答案
我认为这个正则表达式应该有效:
if line =~ /\xEF\xBB\xBF/ # If line contains BOM character
fail "Line contains a BOM char!"
end
如果您遇到编码问题,将行和正则表达式强制为 UTF-8 可能会有所帮助,如下所示:
regexp = Regexp.new("\xEF\xBB\xBF".force_encoding("UTF-8"), Regexp::FIXEDENCODING)
if line.force_encoding("UTF-8") =~ regexp
# ...
关于ruby-on-rails - 在 RUBY 中检测到隐藏 BOM 字符时如何引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44557759/