Ruby编码

January 07, 2013 20:50


文件读取有外部编码和内部编码,具体的我也没深究了,暂时没用到现在只是把今天了解到的一点做个记录

File.open("path/to/file", "r:GB2312:UTF-8")

其中的GB2312为读取文件的外部编码,UTF-8内部编码,文件物理存储的编码格式不同, 也就必须使用不同的外部编码来读取文件,内部编码应该就是程序为读取到的文本使用的存储方式吧, 这个纯猜测。。没去折腾了解。。

然后一个工具转换编码的Linux下面使用:enca

$ enca path/to/file # 显示出文件的编码

$ enca -c path/to/file # 自动将文件进行编码转换。。具体怎么转我也不知道
# 今天在Mac使用自动将当前的GB18030编码文件转换成了UTF-8

然又想起了上次一个问题,ruby1.8中toyaml中文的变成了二进制显示了, 1.9+ 就不会,不知道怎么解决。。。后来直接使用了tojson, 好在这个不会转换成其它的东东了

o = {:a => "文本"}

File.open("file", "w+") {|f| f.write a.to_json }

JSON File.read("file") # => {:a => "文本"}

这个数据导入导出用json也不错,不过还是没有yaml强大。

一些 Word 文档比较常用的编码是 iso-8859-1 ,对于普通 ASCII 字符 UTF-8 读取正常,但读取非 ASCII 字符时,就会出现编码问题,在读取时指定编码就可以正常读取了

File.open('my_file', 'r:iso-8859-1:utf-8', &:read)

Comments: