替换UTF-16LE编码文件中的字符串



我有一个以UTF-16LE编码的自动生成文件,我想编写一个Ruby脚本,通过正则表达式搜索版本号并将其替换为新的版本号。下面是我最初尝试使用的内容:

File.open(filepath,"rb:UTF-16") do |file|
  file.each do |line|
    line.gsub!(/FILEVERSION d.d/,FILEVERSION)
  end
end

然而,这没有工作,因为我得到一个错误消息,说"不兼容的编码regexp匹配(US-ASCII regexp与UTF-16字符串)"。我试图在UTF-16中强制编码我的FILEVERSION字符串,但得到了同样的错误。我的一位同事说,在UTF-16编码中不能有效地使用正则表达式。有解决这个问题的方法吗?

如果你小心地用UTF-16LE编码,它应该可以工作。

re = Regexp.new('FILEVERSION d.d'.encode('UTF-16LE'))
File.open(filepath,"rb:UTF-16LE") do |file|
    file.each do |line|
        line.gsub!(re, FILEVERSION.encode('UTF-16LE'))
    end
end

最新更新