我有一个包含以下内容的Ruby文件:
# encoding: iso-8859-1
File.open('foo.txt', "w:iso-8859-1") {|f| f << 'fòo'}
puts File.read('foo.txt').encoding
- 当我在Windows命令提示符下运行ruby 1.9.3时,我会得到: IBM437
- 当我在cygwin ruby 1.9.3下运行它时,我会得到: UTF-8
- 我希望得到的是: iso-8859-1
有人能解释一下这里发生了什么吗?
更新
这是我正在寻求的更好描述:
- 现在我明白了,感谢Darshan的解释,默认情况下ruby将在Encoding.default_external中加载文件,但是# encoding:iso-8859-1这一行不应该覆盖它吗?
- ruby能够自动检测文件的编码吗?是否有任何文件系统其编码是属性?
- 我最好的选择是“记住”我保存文件的编码吗?