V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jokester
V2EX  ›  问与答

在解码中文文本时智能地忽略无法解码的字节?

  •  
  •   jokester · 2014-06-25 14:37:43 +08:00 · 3178 次点击
    这是一个创建于 3839 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想把一些中文文本(大体是gb2312/gbk/gb18030)转换到UTF8编码
    这些文本中可能混入了一些错误的字节

    我试过一种"贪婪的"解码方式: 在碰到(无法作为gb2312/gbk/gb18030解码的字节序列)时抛弃第一个未解码字节, 并重试解码.
    这样确实能完成整个文件的解码.
    但是有时会得到一串汉字乱码, 推测是碰到"无意义的汉字序列 但是是合法的汉字编码"

    我怎样可以更智能地忽略错误字节, 并尽量解码成有意义的中文文本?

    # 感觉这是个轮子级问题. 如果有现成的技术或实现就最好
    2 条回复    2014-06-26 12:03:15 +08:00
    kfll
        1
    kfll  
       2014-06-25 14:43:19 +08:00
    iconv -c 么

    -c When this option is given, characters that cannot be converted are silently discarded, instead of leading to a conversion error.
    jokester
        2
    jokester  
    OP
       2014-06-26 12:03:15 +08:00
    @kfll 对啊 解码成乱码的就这种
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2674 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:58 · PVG 22:58 · LAX 06:58 · JFK 09:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.