新手问题 带 BOM 的 UTF-8 转换为 GBK

bluexuemei · 2014年06月20日 · 最后由 luikore 回复于 2014年06月20日 · 2959 次阅读

无 BOM 的 UTF-8 转换为 GBK:file.open(f,"r:utf-8:gbk")
带 BOM 的 UTF-8 转换为 GBK:file.open(f,"r:bom|utf-8:gbk")
但是如果一个文件夹中有的是带 BOM 的,有些是不带 BOM 的 utf-8,怎么判断并读取???

貌似需要判断文件头的前几个字节来区分是否带 BOM

File.open 会自动判断是否带 bom 并跳过

#3 楼 @bluexuemei 大概我记错了... 这样?

File.open(f, "r:utf-8", &:read).sub(/\A\xEF\xBB\xBF/, '').encode 'gbk'

#4 楼 @luikore Dir.glob('.txt').each{|f|a+=open(f,'r:bom|utf-8',&:readlines)};a.map{|line|line.encode('gbk')}这样可以运行 说明 File.open 会自动判断是否带 bom 并跳过,谢谢! 但是为什么 Dir.glob('.txt').each{|f|a+=open(f,'r:bom|utf-8:gbk',&:readlines)}这样写却不对?不带 BOM 的显示乱码

需要 登录 后方可回复, 如果你还没有账号请 注册新账号