意外的扩展字节(偏移量 1014),带有 utf8.decode()

问题描述 投票:0回答:0

我正在使用

csv
包读取一个
file_picker
文件然后读取数据我正在使用这个代码

final decodedString = utf8.decode(file.bytes);

这给了我以下错误。

Unexpected extension byte (at offset 1014)

我设置

allowMalformed: true
的时候没有报错但是数据不完整,漏掉了
csv
文件中的很多行

final decodedString = utf8.decode(file.bytes, allowMalformed: true);

我遇到过很多解决方案,也尝试过使用

latin1
解码,但数据仍然不完整。

一些相关信息分享

我用 Python 编写了一个程序来仔细检查文件是否有问题,它给了我一个类似的错误。

Python代码

import csv
import unicodedata

def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
    csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
    for row in csv_reader:
        print(row)

filename = 'da.csv'
reader = unicode_csv_reader(open(filename))

错误

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 1014: invalid start byte

工作解决方案

我能够通过在

errors
函数中设置
open
参数来解决它。

open(filename, errors="ignore")

我期待

allowMalformed
中的
utf8.decode()
errors
一样解决这个问题,但令我惊讶的是,结果却大不相同。

python flutter dart utf-8 decode
© www.soinside.com 2019 - 2024. All rights reserved.