请问 linux 如何查看 GBK 编码的文本

2016-03-10 22:02:47 +08:00
 yuedingwangji

昨天,处理一个 600M 的文件,把文件复制到 linux 中打开乱码,百度了一下,说可以用 iconv 转码,可是我用 iconv 的时候, 600 多 M 的文档转了好久,后面他居然还提示错误,无法成功转换,我崩溃了,用 VIM 转码也不行,而且 VIM 打开 600M 的文件明显有卡顿了, 后面只能借助 notepad+ 来转码了,可 notepad++ 居然不能打开大于 500 多 M 的文件,还得把 2 个文件分割,然后用 notepad 转 utf-8 码,在用 cat 合并,好麻烦呀 。请问有什么别的方法么?
还有,我在用 notepad++转码的时候很快的,点一下格式--转成 UTF-8 码 就 OK 了,为什么 linux 下的 iconv 转码那个慢,感觉是一个个的转的,好恐怖

8696 次点击
所在节点    Linux
37 条回复
tracyone
2016-03-10 22:06:39 +08:00
难道你转成 utf-8 之后里面的多字节文字还能看?
xiaorixin
2016-03-10 22:19:14 +08:00
如果你觉得 iconv 比较慢可以把文件按行分割一下, split --help 查看具体使用方法。然后再 iconv, 完了 cat 到一起,麻烦就写个脚本。
yuedingwangji
2016-03-10 22:26:30 +08:00
@tracyone 什么意思?
yuedingwangji
2016-03-10 22:27:45 +08:00
@xiaorixin 600M 的文档 分割 完 在合并?
clino
2016-03-10 22:29:14 +08:00
用 python 写个几行代码就能搞定
lgh
2016-03-10 22:52:54 +08:00
用百度就是个错误的开始……正确的姿势不是转码而是找到在 Linux 下查看 GBK 的方法,例如顺手 Google 到的这篇 http://edyfox.codecarver.org/html/vim_fileencodings_detection.html
yuedingwangji
2016-03-10 22:53:11 +08:00
@clino 怎么弄,教我
fasling
2016-03-11 00:39:41 +08:00
#python3.4
f=open('utf8.txt','wb')
for line in open('gbk.txt'):
f.write(line.encode('utf8'))
f.close()
cxbig
2016-03-11 00:49:30 +08:00
随便用个语言, php 、 python 或 ruby 写几行就搞定的事。
唯一要注意的是中文编码是不是标称的那个,写爬虫的时候遇到过,网页标注的是 gbk ,其实是 gb2312 。
skydiver
2016-03-11 00:51:04 +08:00
cat xx.txt | iconv -f GBK
clino
2016-03-11 08:46:57 +08:00
michaelOoO
2016-03-11 09:24:56 +08:00
如果只是为了查看,不是非要转换的话, 配置下 vim 直接打开就可以看:

vim 中设置:
`
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
`
链接:
http://edyfox.codecarver.org/html/vim_fileencodings_detection.html
lostsnow
2016-03-11 09:54:23 +08:00
```
export LANG=zh_CN.GBK
```
realpg
2016-03-11 09:58:40 +08:00
U 盘拷出来,随便找个 windows 电脑, ultraedit 打开,另存为,编码选 UTF-8 ,存 U 盘里,再拷到 linux 里,完事。
ultraedit 绿色版满天飞,不到 20MB
WangYanjie
2016-03-11 10:15:03 +08:00
@lostsnow 这是最快的,楼主不要怀疑了
greenskinmonster
2016-03-11 10:19:56 +08:00
enca -L zh_CN -x utf-8 file.txt
BurNFans
2016-03-11 10:23:29 +08:00
python 一行代码搞定, file("xxx_uf8", "w").write(file("xxx").read().decode("gbk").encode("utf8"))
khan
2016-03-11 10:26:43 +08:00
@cxbig gb2312 不是 gbk 的子集么, gb2312 支持 8k 多个汉字, gbk 2w 多个汉字, 他们之间不存在错误的问题啊
Khlieb
2016-03-11 10:38:10 +08:00
@realpg 弄个 Windows 虚拟机也可以吧
yuedingwangji
2016-03-11 11:05:00 +08:00
@realpg ultraedit 必须另存为的时候选编码么? 我是直接 文件-转换 ,哪里转码的,不过没效果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/262634

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX