ruby-on-rails - 在 RUBY 中检测到隐藏 BOM 字符时如何引发错误

标签 ruby-on-rails ruby regex utf-8 byte-order-mark

这里有详细内容。我有一个包含隐藏 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/

相关文章:

python - 如何计算 Pandas 数据框中的元音和辅音(大写和小写)?

Internet Explorer 中的 Javascript RegEx 问题

ruby-on-rails - Controller 测试在 Rails 5.1 升级后发出调试(失败)消息

ruby-on-rails - 在 rails 中显示 base64 编码的图像

ruby-on-rails - 安装 json Ruby gem 时出错

ruby-on-rails - 如何以myuser ssh身份,但在/home/deployuser中以deployuser身份运行所有Capistrano命令

ruby-on-rails - 无法使用 Authlogic 和 Ruby on Rails 使用有效密码登录?

Java:正则表达式 - 我如何获得第一个引号文本

ruby-on-rails - 是否可以使用dotenv将JSON文件存储到ENV变量中?

ruby-on-rails - 带有 BCrypt 的 Rails Fixtures