V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
yuedingwangji
V2EX  ›  Linux

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

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

    昨天,处理一个 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 ,其实是 gb2312 。
    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  
       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 gb2312 不是 gbk 的子集么, gb2312 支持 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   ·   我们的愿景   ·   实用小工具   ·   1640 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:50 · PVG 00:50 · LAX 09:50 · JFK 12:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.