首页 文章

无法转换为utf-8

提问于
浏览
4

我有以下字符串列表:

['\ xe8 \ xbf \ x99 \ xe6 \ x98 \ xaf \ xe4 \ xb8 \ x80 \ xe4 \ xb8 \ xaa \ xe4 \ xbb \ xa4 \ xe4 \ xba \ xba \ xe6 \ xb2 \ xae \ xe4 \ xb8 \ XA7 \ XE7 \ x9a \ X84 \ XE6 \ X97 \ xa5 \ X82' ,'\ XE6 \ x9c \ X89 \ XE4 \ XB8 \的Xaa \ xe5 \ xb9 \ XB4 \ xe5 \ xb9 \ XBC \ XE7 \ x9a \ X84 \ xe5 \ x9f \ xe5 \ x9c \ xa8 \ XE7 \ X82 \ x8e \ XE7 \ X82 \ x8e \ XE7 \ X83 \ X88 \ XE6 \ X97 \ xa5 \ XB8 \ x8b \ XE6 \ X99 \ X95 \ xe5 \ X80 \ X92 \ XE4 \ XBA \ 86 \ XE3 \ X80 \ X82' ,'\ xe8 \ X90 \ XBD \ XE6 \ X97 \ xa5 \ x8a \ x8a \ xe5 \ XA4版权所有\ xA9 \ XE7版权所有\ xA9 \ XBA \ XE6 \ x9f \ X93 \ XE6 \ X88 \ X90 \ xe9 \的x87 \ X91 \ xe8 \ X89 \ XB2 \ XE3 \ X80 \ XE6 \ X97 \ xa5 \ x8a \ x8a \ xe5 \ XA4版权所有\ xA9 \ XE7版权所有\ xA9 \ XBA \ XE6 \ x9f \ X93 \ XE6 \ X88 \ X90 \ xe9 \的x87 \ X91 \ xe8 \ X89 \ XB2 \ XE3 \ X80 \ X82' ,'\ XE6 \ X98 \ x9f \ XE6 \ x9c \ x9f \ XE6 \ X97 \ xa5 \ X98 \ XAF \ XE4 \ XB8 \ X80 \ xe5 \ X91 \ xa8 \ XE7 \ x9a \ X84 \ XE7 \ XAC \ XAC \ XE4 \ XB8 \ X80 \ xe5 \ XA4版权所有\ xA9 \ XE3 \ X80 \ XE6 \ x9c \ x9f \ XE6 \ X97 \ xa5 \ X98 \ XAF \ XE4 \ XB8 \ X80 \ xe5 \ X91 \ xa8 \ XE7 \ x9a \ X84 \ XE7 \ XAC \ XAC \ XE4 \ XB8 \ X80 \ xe5 \ XA4版权所有\ xA9 \ XE3 \ X80 \ X82' ,'\ xe5 \ x8d \ X81 \ XE6 \ x9c \ X88 \ XE4 \ XB8 \ X80 \ XE6 \ X97 \ xa5 \ X98 \ XAF \ XE4 \ XB8 \ XE7 \ x9a \ X84 \ xe5 \ x9b \ XBD \ xe5 \ XBA \ 86 \ xe8 \ x8a \ X82 \ XE3 \ X80 \ X82' ,'\ xe5 \ x9c \ xa8 \ XE6 \ X97 \ xa5 \ x9c \ XAC \ XEF \ XBC \ x8c \ XE6 \ XA3 \ X92 \ XE7 \ X90 \ X83 \ XE6 \ XAF \ X94 \ xe5 \ X85 \ XB6 \ XE4 \ XBB \ X96 \ XE4 \ XBB \ XBB \ XE4 \ XBD \ X95 \ xe8 \ XBF \ X90 \ xe5 \ x8a \ xa8 \ xe9 \ X83 \ XBD \ xe5 \ X8F \ X97 \ XE4 \ XBA \ XBA \ XE6 \ XAC \ XA2 \ xe8 \ XBF \ x8e \ XE3 \ X80 \ XE6 \ X97 \ xa5 \ x9c \ XAC \ XEF \ XBC \ x8c \ XE6 \ XA3 \ X92 \ XE7 \ X90 \ X83 \ XE6 \ XAF \ X94 \ xe5 \ X85 \ XB6 \ XE4 \ XBB \ X96 \ XE4 \ XBB \ XBB \ XE4 \ XBD \ X95 \ xe8 \ XBF \ X90 \ xe5 \ x8a \ xa8 \ xe9 \ X83 \ XBD \ xe5 \ X8F \ X97 \ XE4 \ XBA \ XBA \ XE6 \ XAC \ XA2 \ xe8 \ XBF \ x8e \ XE3 \ X80 \ X82' ,'\ xe8 \ XBF \ X99 \ XE6 \ X98 \ XAF \ XE6 \ XAF \ X8F \ xe5 \ XAE \ X89 \ XE6 \ X81 \ XAF \ XE6 \ X97 \ xa5 \ XBC \ x8c \ xe9 \ X99 \ XA4 \ XE6 \ X97 \ xa5 \ xe5 \ XB8 \ XB8 \ XE7 \ x9a \ X84 \ xe5 \ X85 \ xa8 \ XE7 \的x87 \ X94 \ XE7 \ xa5 \ xe5 \ xa5 \ XA0 \ XE7 \ xa5 \ XAD \ xe5 \ XA4 \ X96 \ XEF \ XBC \ x8c \ xe5 \ XBA \ X94 \ XE7 \ x8c \ XAE \ XE7 \ x9a \ X84 \ xe5 \ XAE \ X89 \ XE6 \ X81 \ XAF \ XE6 \ X97 \ xa5 \ xe5 \ X85 \ xa8 \ XE7 \的x87 \ X94 \ XE7 \ xa5 \ XAD \ XE3 \ X80 \ X82' ,'\ XE6 \ x9c \ X89 \ XE6 \ X97 \ XB6 \ xe5 \ X80 \ X99 \ XEF \ XBC \ x8c \ xe5 \ X8F \的Xaa \ XE6 \ x9c \ X89 \ xe9 \ X83 \ xa8 \ xe5 \ X88 \ 86 \ XE6 \ X97 \ xa5 \ XBD \ XAE \ xe8 \ XA2 \ XAB \ xe9 \ X81 \ XAE \ XE6 \ x8c \ XA1 \ XE4 \ XBD \ X8F \ XEF \ XBC \ x8c \ xe9 \ X82 \ XA3 \ xe5 \ XB0 \ XB1 \ XE4 \ XB8 \ x8d \ XE6 \ X98 \ XAF \ XE6 \ X97 \ xa5 \ xe5 \ X85 \ xa8 \ xe9 \ XA3 \ x9f \ XEF \ XBC \ x8c \ xe8 \ X80 \ x8c \ XE6 \ X98 \ XAF \ XE6 \ X97 \ xa5 \ xe5 \ X81 \ X8F \ xe9 \ XA 3 \ x9f \ XE3 \ X80 \ XE6 \ X97 \ XB6 \ xe5 \ X80 \ X99 \ XEF \ XBC \ x8c \ xe5 \ X8F \的Xaa \ XE6 \ x9c \ X89 \ xe9 \ X83 \ xa8 \ xe5 \ X88 \ X86 \ XE6 \ X97 \ xa5 \ XBD \ XAE \ xe8 \ XA2 \ XAB \ xe9 \ X81 \ XAE \ XE6 \ x8c \ XA1 \ XE4 \ XBD \ X8F \ XEF \ XBC \ x8c \ xe9 \ X82 \ XA3 \ xe5 \ XB0 \ XB1 \ XE4 \ XB8 \ x8d \ XE6 \ X98 \ XAF \ XE6 \ X97 \ xa5 \ xe5 \ X85 \ xa8 \ xe9 \ XA3 \ x9f \ XEF \ XBC \ x8c \ xe8 \ X80 \ x8c \ XE6 \ X98 \ XAF \ XE6 \ X97 \ xa5 \ xe5 \ X81 \ X8F \ xe9 \ XA3 \ x9f \ XE3 \ X80 \ X82' ,'\ XE4 \ XBA \ x8b \ XE4 \ XBB \ XB6 \ xe5 \ X8F \ X91 \ XE7 \ X94 \ x9f \ XE6 \ X97 \ xa5 \ X8F \ XAF \ XE6 \ x8c \的x87 \ xe5 \ XAE \ x9a \ XE4 \ XB8 \ XBA \ xe5 \ X91 \ xa8 \ xe5 \ 86 \ X85 \ XE6 \ x9f \ X90 \ XE6 \ X97 \ xa5 \ XE6 \ X88 \ X96 \ XE6 \ x9c \ X88 \ xe5 \ 86 \ X85 \ XE6 \ x9f \ X90 \ XE6 \ X97 \ xa5 \ XE3 \ X80 \ XE4 \ XBB \ XB6 \ xe5 \ X8F \ X91 \ XE7 \ X94 \ x9f \ XE6 \ X97 \ xa5 \ X8F \ XAF \ XE6 \ x8c \的x87 \ xe5 \ XAE \ x9a \ XE4 \ XB8 \ XBA \ xe5 \ X91 \ xa8 \ xe5 \ 86 \ X85 \ XE6 \ x9f \ X90 \ XE6 \ X97 \ xa5 \ XE6 \ X88 \ X96 \ XE6 \ x9c \ X88 \ xe5 \ 86 \ X85 \ XE6 \ x9f \ X90 \ XE6 \ X97 \ xa5 \ XE3 \ X80 \ X82' ]

该程序一直给我这个错误:

UnicodeDecodeError:'utf8'编解码器无法解码位置30中的字节0xad:无效的起始字节

我正在使用这段代码遍历列表并尝试转换,其中 new_sentences 是列表:

for i in range(0,len(new_sentences)):
    stuff = new_sentences[i].strip()
    stuff = unicode(stuff,"utf8")

我已经浏览了列表,但找不到无法转换的字节 . 我知道它很长,但任何帮助都会受到赞赏 . 谢谢 .

3 回答

  • 6

    您的字符串包含无效字节(例如 \x82 ),这使得UTF-8不可翻译 . 您可以使用忽略无效字节

    stuff = unicode(stuff, "utf8", errors="ignore")
    

    但修复这些无效字符的来源会更有意义 .

  • 2

    您的字符串无效UTF-8 . 这是一个可以深入查看问题字符的脚本 . 我不知道渲染的unicode东西是否有意义,但希望你能

    string_list = ['\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe4\xbb\xa4\xe4\xba\xba\xe6\xb2\xae\xe4\xb8\xa7\xe7\x9a\x84\xe6\x97\xa5\x82',
    '\xe6\x9c\x89\xe4\xb8\xaa\xe5\xb9\xb4\xe5\xb9\xbc\xe7\x9a\x84\xe5\x9f\xe5\x9c\xa8\xe7\x82\x8e\xe7\x82\x8e\xe7\x83\x88\xe6\x97\xa5\xb8\x8b\xe6\x99\x95\xe5\x80\x92\xe4\xba\x86\xe3\x80\x82',
    '\xe8\x90\xbd\xe6\x97\xa5\x8a\x8a\xe5\xa4\xa9\xe7\xa9\xba\xe6\x9f\x93\xe6\x88\x90\xe9\x87\x91\xe8\x89\xb2\xe3\x80\xe6\x97\xa5\x8a\x8a\xe5\xa4\xa9\xe7\xa9\xba\xe6\x9f\x93\xe6\x88\x90\xe9\x87\x91\xe8\x89\xb2\xe3\x80\x82',
    '\xe6\x98\x9f\xe6\x9c\x9f\xe6\x97\xa5\x98\xaf\xe4\xb8\x80\xe5\x91\xa8\xe7\x9a\x84\xe7\xac\xac\xe4\xb8\x80\xe5\xa4\xa9\xe3\x80\xe6\x9c\x9f\xe6\x97\xa5\x98\xaf\xe4\xb8\x80\xe5\x91\xa8\xe7\x9a\x84\xe7\xac\xac\xe4\xb8\x80\xe5\xa4\xa9\xe3\x80\x82',
    '\xe5\x8d\x81\xe6\x9c\x88\xe4\xb8\x80\xe6\x97\xa5\x98\xaf\xe4\xb8\xe7\x9a\x84\xe5\x9b\xbd\xe5\xba\x86\xe8\x8a\x82\xe3\x80\x82',
    ]
    
    for i, line in enumerate(string_list):
        print '---- line', i
        try:
            u = line.strip().decode('utf-8')
        except UnicodeDecodeError as e:
            print 'decode failed at', e.args[2], 'leaving', repr(line[e.args[2]:])
            u = line.strip().decode('utf-8', 'ignore')
        print u
    

    这给了你

    ---- line 0
    decode failed at 30 leaving '\x82'
    这是一个令人沮丧的日
    ---- line 1
    decode failed at 15 leaving '\xe5\x9f\xe5\x9c\xa8\xe7\x82\x8e\xe7\x82\x8e\xe7\x83\x88\xe6\x97\xa5\xb8\x8b\xe6\x99\x95\xe5\x80\x92\xe4\xba\x86\xe3\x80\x82'
    有个年幼的在炎炎烈日晕倒了。
    ---- line 2
    decode failed at 6 leaving '\x8a\x8a\xe5\xa4\xa9\xe7\xa9\xba\xe6\x9f\x93\xe6\x88\x90\xe9\x87\x91\xe8\x89\xb2\xe3\x80\xe6\x97\xa5\x8a\x8a\xe5\xa4\xa9\xe7\xa9\xba\xe6\x9f\x93\xe6\x88\x90\xe9\x87\x91\xe8\x89\xb2\xe3\x80\x82'
    落日天空染成金色日天空染成金色。
    ---- line 3
    decode failed at 9 leaving '\x98\xaf\xe4\xb8\x80\xe5\x91\xa8\xe7\x9a\x84\xe7\xac\xac\xe4\xb8\x80\xe5\xa4\xa9\xe3\x80\xe6\x9c\x9f\xe6\x97\xa5\x98\xaf\xe4\xb8\x80\xe5\x91\xa8\xe7\x9a\x84\xe7\xac\xac\xe4\xb8\x80\xe5\xa4\xa9\xe3\x80\x82'
    星期日一周的第一天期日一周的第一天。
    ---- line 4
    decode failed at 12 leaving '\x98\xaf\xe4\xb8\xe7\x9a\x84\xe5\x9b\xbd\xe5\xba\x86\xe8\x8a\x82\xe3\x80\x82'
    十月一日的国庆节。
    
  • 2

    从api获取数据时我遇到了这个问题 . 使用python chardet来检测语言

    from chardet import detect
    coding = detect(line)
    

    并且返回字符串是使用gbk try编码的东西

    line.strip().decode('utf-8')
    

    不适合我

    line.decode('gbk').encode('utf-8')
    

    工作得很好..,我想问题是我们需要知道char编码的方式然后解码它..

相关问题