请问 linux 如何查看 GBK 编码的文本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
yuedingwangji
V2EX    Linux

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

  •  
  •   yuedingwangji 2016-03-10 22:02:47 +08:00 9608 次点击
    这是一个创建于 3557 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    37 条回复    2016-03-31 02:19:26 +08:00
    tracyone
        1
    tracyone  
       2016-03-10 22:06:39 +08:00
    难道你转成 utf-8 之后里面的多字节文字还能看?
    xiaorixin
        2
    xiaorixin  
       2016-03-10 22:19:14 +08:00
    如果你觉得 iconv 比较慢可以把文件按行分割一下, split --help 查看具体使用方法。然后再 iconv, 完了 cat 到一起,麻烦就写个脚本。
    yuedingwangji
        3
    yuedingwangji  
    OP
       2016-03-10 22:26:30 +08:00
    @tracyone 什么意思?
    yuedingwangji
        4
    yuedingwangji  
    OP
       2016-03-10 22:27:45 +08:00
    @xiaorixin 600M 的文档 分割 完 在合并?
    clino
        5
    clino  
       2016-03-10 22:29:14 +08:00 via Android
    用 python 写个几行代码就能搞定
    lgh
        6
    lgh  
       2016-03-10 22:52:54 +08:00
    用百度就是个错误的开始……正确的姿势不是转码而是找到在 Linux 下查看 GBK 的方法,例如顺手 Google 到的这篇 http://edyfox.codecarver.org/html/vim_fileencodings_detection.html
    yuedingwangji
        7
    yuedingwangji  
    OP
       2016-03-10 22:53:11 +08:00
    @clino 怎么弄,教我
    fasling
        8
    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
        9
    cxbig  
       2016-03-11 00:49:30 +08:00
    随便用个语言, php 、 python 或 ruby 写几行就搞定的事。
    唯一要注意的是中文编码是不是标称的那个,写爬虫的时候遇到过,网页标注的是 gbk ,其实是 。
    skydiver
        10
    skydiver  
       2016-03-11 00:51:04 +08:00 via iPad
    cat xx.txt | iconv -f GBK
    clino
        11
    clino  
       2016-03-11 08:46:57 +08:00
    michaelOoO
        12
    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
        13
    lostsnow  
       2016-03-11 09:54:23 +08:00
    ```
    export LANG=zh_CN.GBK
    ```
    realpg
        14
    realpg  
    PRO
       2016-03-11 09:58:40 +08:00
    U 盘拷出来,随便找个 windows 电脑, ultraedit 打开,另存为,编码选 UTF-8 ,存 U 盘里,再拷到 linux 里,完事。
    ultraedit 绿色版满天飞,不到 20MB
    WangYanjie
        15
    WangYanjie  
       2016-03-11 10:15:03 +08:00
    @lostsnow 这是最快的,楼主不要怀疑了
    greenskinmonster
        16
    greenskinmonster  
       2016-03-11 10:19:56 +08:00
    enca -L zh_CN -x utf-8 file.txt
    BurNFans
        17
    BurNFans  
       2016-03-11 10:23:29 +08:00
    python 一行代码搞定, file("xxx_uf8", "w").write(file("xxx").read().decode("gbk").encode("utf8"))
    khan
        18
    khan  
       2016-03-11 10:26:43 +08:00
    @cxbig 不是 gbk 的子集么, 支持 8k 多个汉字, gbk 2w 多个汉字, 他们之间不存在错误的问题啊
    Khlieb
        19
    Khlieb  
       2016-03-11 10:38:10 +08:00 via Android
    @realpg 弄个 Windows 虚拟机也可以吧
    yuedingwangji
        20
    yuedingwangji  
    OP
       2016-03-11 11:05:00 +08:00
    @realpg ultraedit 必须另存为的时候选编码么? 我是直接 文件-转换 ,哪里转码的,不过没效果
    ToughGuy
        21
    ToughGuy  
       2016-03-11 11:05:11 +08:00
    $ du -h gbk.txt
    643M gbk.txt

    $ time iconv -f GBK -t UTF-8 gbk.txt >/dev/null

    real 0m2.995s
    user 0m2.951s
    sys 0m0.043s


    $ time iconv -f GBK -t UTF-8 gbk.txt > /data/utf8.txt

    real 0m5.579s
    user 0m3.061s
    sys 0m0.797s
    tatsuteng
        22
    tatsuteng  
       2016-03-11 11:12:31 +08:00
    mousepad ?
    withrock
        23
    withrock  
       2016-03-11 11:16:05 +08:00
    应该是要在你的 linux 上安装 GBK 的字符集吧?
    sudo123
        24
    sudo123  
       2016-03-11 11:45:38 +08:00
    系统自带的编辑器打开文本文件可以选择特定的编码
    clino
        25
    clino  
       2016-03-11 20:40:01 +08:00
    话说楼主这些方法都试过哪些? 搞定了吗?
    woyaojizhu8
        26
    woyaojizhu8  
       2016-03-11 21:20:20 +08:00
    @tatsuteng 正解
    xiaorixin
        27
    xiaorixin  
       2016-03-12 09:35:14 +08:00
    600M 转完再 cat 也很快的。
    yuedingwangji
        28
    yuedingwangji  
    OP
       2016-03-12 09:39:52 +08:00
    @WangYanjie 这个我试过了 ,好像没用
    yuedingwangji
        29
    yuedingwangji  
    OP
       2016-03-12 09:41:08 +08:00
    @ToughGuy 为什么你的这么快的?
    WangYanjie
        30
    WangYanjie  
       2016-03-13 00:26:46 +08:00
    @yuedingwangji 如果你是用 xshell 这样的软件连接的 linux 的话,你可能还要修改 xshell 对应的编码
    ToughGuy
        31
    ToughGuy  
       2016-03-13 16:53:11 +08:00
    @yuedingwangji

    我是去百度百科里面抓的一页中文, 先转换成 GBK , 然后拼接一个 600M 的文件。 不知道速度快和重复两有没有关系。

    你可以试试输出到 /dev/null 排除掉磁盘 I/O 问题再看看速度如何。

    我的 CPU 是 I5-4570
    yuedingwangji
        32
    yuedingwangji  
    OP
       2016-03-14 00:40:23 +08:00
    @BurNFans 谢谢!
    yuedingwangji
        33
    yuedingwangji  
    OP
       2016-03-14 00:40:36 +08:00
    @fasling 谢谢,有空试下
    yuedingwangji
        34
    yuedingwangji  
    OP
       2016-03-14 00:42:05 +08:00
    @ToughGuy 我有一个小疑惑, 就是屏幕输出的时候是不是很慢, 如果丢到 /dev/null 理就很快? 磁盘 iO 问题说的是什么? 没听过
    gbcbooks
        35
    gbcbooks  
       2016-03-21 10:21:10 +08:00
    @michaelOoO 这位兄台给出的解决方案我就在用。楼主可以看看。
    yuedingwangji
        36
    yuedingwangji  
    OP
       2016-03-22 01:39:22 +08:00
    @gbcbooks 我是要转换的 ,单门查看我在 windows 就可以了
    woyaojizhu8
        37
    woyaojizhu8  
       2016-03-31 02:19:26 +08:00
    mousepad 和 leafpad
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2664 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:56 PVG 13:56 LAX 21:56 JFK 00:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86