我认为它是'cp1252',别名'windows-1252'。
在阅读了 Jörg 的回答后,我回到了 ruby-doc.org 上的编码页面,试图找到对他提到的特定编码的引用,这就是我发现该Encodings.aliases
方法的时候。
所以我在这个答案的最后总结了这个方法。
然后我查看了 notepad++ 中的输出,将其视为“ANSI”和 utf-8,并将其与 irb 中的输出进行了比较...
我只能在 irb 输出中找到两个地方,其中 utf-8 文件出现乱码的方式与将其视为“ANSI”时在 notepad++ 中出现的方式完全相同,这些地方用于 cp1252 和 cp1254。
cp1252 显然是我的“文件系统”编码,所以我要这么做。
我编写了一个脚本来复制所有转换为 utf-8 的文件,尝试从 1252 和 1254 开始。
到目前为止,utf-8 正则表达式似乎适用于两组文件。
现在,在遇到所有这些编码难题之前,我必须尝试记住我真正想要完成的工作。xD
def compare_encodings file1, file2
file1_probs = []
file2_probs = []
txt = File.open('encoding_test_output.txt','w')
Encoding.aliases.sort.each do |k,v|
Encoding.default_external=k
ename = [k.downcase, v.downcase].join " --- "
s = ""
begin
s << "#{File.read(file1)}"
rescue
s << "nope nope nope"
file1_probs << ename
end
s << "\t| #{ename} |\t"
begin
s << "#{File.read(file2)}"
rescue
s << "nope nope nope"
file2_probs << ename
end
Encoding.default_external= 'utf-8'
txt.puts s.center(58)
puts s.center(58)
end
puts
puts "file1, \"#{file1}\" exceptions from trying to convert to:\n\n"
puts file1_probs
puts
puts "file2, \"#{file2}\" exceptions from trying to convert to:\n\n"
puts file2_probs
txt.close
end
compare_encodings "utf-8.txt", "np++'ANSI'.txt"