UnicodeDecodeError:“ utf-8”编解码器无法解码位置0的字节0xff

时间:2018-12-06 01:22:26

标签: python json django

  1. 我试图将Django文件和sqlite3数据库文件迁移到 MySQL数据,我遇到了这样的错误。
  2. 创建数据库: 创建数据库mysite_db默认charset = utf8mb4默认整理 utf8mb4_unicode_ci;

    db_sqlite3中的数据迁移: python manage.py dumpdata> data.json

    输入mysql: python manage.py loaddata data.json


    loaddata中的文件“ C:\ blog_env \ lib \ site-packages \ django \ core \ management \ commands \ loaddata.py”,行113 self.load_label(fixture_label) 文件“ C:\ blog_env \ lib \ site-packages \ django \ core \ management \ commands \ loaddata.py”,行168,位于load_label中 对于对象中的obj: 在Deserializer中的第66行,文件“ C:\ blog_env \ lib \ site-packages \ django \ core \ serializers \ json.py” stream_or_string = stream_or_string.decode() UnicodeDecodeError:“ utf-8”编解码器无法解码位置0的字节0xff:无效的起始字节 (blog_env)PS C:\ blog_env \ mysite>

2 个答案:

答案 0 :(得分:0)

我最近遇到了同样的问题...这是我的解决方案:

确认“ file_path”的编码格式:

  1. 下载并使用记事本++打开文件
  2. 检查右下角;在那里,您可以查看文件是否以兼容格式编码,或者文件是否具有字节顺序标记或BOM表符号
  3. 如果其中任何一个为真,则只需“另存为”正确/所需的格式。

您应该会满足上述要求。

答案 1 :(得分:0)

只需从错误发生的位置继续查找文件的位置即可。

在我的情况下,错误是来自序列化程序中的json.py文件,因为我的错误是:

File "C:\Users\User\AppData\Local\Programs\Python\Python38\Lib\site-packages\django\core\serializers\json.py",line 66 in Deserializer stream_or_string = stream_or_string.decode() UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

定位后,只需用空闲或记事本打开json.py文件,以便您可以编辑该文件。只需在行中输​​入Deserializer函数即可:

stream_or_string = stream_or_string.decode()

并将此行更改为

stream_or_string = stream_or_string.decode('UTF-16')

并保存它,现在您的错误将得到解决。