Python Pycharm Shell上的UnicodeDecodeError

Python Pycharm Shell上的UnicodeDecodeError,python,django,shell,Python,Django,Shell,我正在使用Pycharm和Python3.4进行Django 1.8.4项目 我试图在shell上创建一个模型对象来测试一些东西,执行这行时: song1 = Cancion.objects.create(nombre="City Lights", audio_file=File(open("C:\\Users\\pablo\\Desktop\\Music\\Brian Culbertson - Another Long Night

我正在使用Pycharm和Python3.4进行Django 1.8.4项目

我试图在shell上创建一个模型对象来测试一些东西,执行这行时:

song1 = Cancion.objects.create(nombre="City Lights",
                               audio_file=File(open("C:\\Users\\pablo\\Desktop\\Music\\Brian Culbertson  - Another Long Night Out (2014)\\01 - City Lights (Feat. Lee Ritenour).mp3",encoding="utf-8")))
我得到这个错误:

Traceback (most recent call last):
  File "<input>", line 2, in <module>
  File "C:\Python34\lib\site-packages\django\db\models\manager.py", line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:\Python34\lib\site-packages\django\db\models\query.py", line 348, in create
    obj.save(force_insert=True, using=self.db)
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 734, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 762, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 846, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "C:\Python34\lib\site-packages\django\db\models\base.py", line 885, in _do_insert
    using=using, raw=raw)
  File "C:\Python34\lib\site-packages\django\db\models\manager.py", line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:\Python34\lib\site-packages\django\db\models\query.py", line 920, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "C:\Python34\lib\site-packages\django\db\models\sql\compiler.py", line 973, in execute_sql
    for sql, params in self.as_sql():
  File "C:\Python34\lib\site-packages\django\db\models\sql\compiler.py", line 931, in as_sql
    for obj in self.query.objs
  File "C:\Python34\lib\site-packages\django\db\models\sql\compiler.py", line 931, in <listcomp>
    for obj in self.query.objs
  File "C:\Python34\lib\site-packages\django\db\models\sql\compiler.py", line 929, in <listcomp>
    ) for f in fields
  File "C:\Python34\lib\site-packages\django\db\models\fields\files.py", line 315, in pre_save
    file.save(file.name, file, save=False)
  File "C:\Python34\lib\site-packages\django\db\models\fields\files.py", line 94, in save
    self.name = self.storage.save(name, content, max_length=self.field.max_length)
  File "C:\Python34\lib\site-packages\django\core\files\storage.py", line 64, in save
    name = self._save(name, content)
  File "C:\Python34\lib\site-packages\django\core\files\storage.py", line 253, in _save
    for chunk in content.chunks():
  File "C:\Python34\lib\site-packages\django\core\files\base.py", line 85, in chunks
    data = self.read(chunk_size)
  File "C:\Python34\lib\codecs.py", line 313, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 21: invalid start byte
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
文件“C:\Python34\lib\site packages\django\db\models\manager.py”,第127行,在manager\u方法中
返回getattr(self.get_queryset(),name)(*args,**kwargs)
文件“C:\Python34\lib\site packages\django\db\models\query.py”,第348行,在create中
对象保存(force_insert=True,using=self.db)
文件“C:\Python34\lib\site packages\django\db\models\base.py”,第734行,保存
强制更新=强制更新,更新字段=更新字段)
文件“C:\Python34\lib\site packages\django\db\models\base.py”,第762行,在save\u base中
更新=自我。保存表格(原始、cls、强制插入、强制更新、使用、更新字段)
文件“C:\Python34\lib\site packages\django\db\models\base.py”,第846行,在保存表中
结果=self.\u do\u insert(cls.\u base\u manager,using,fields,update\u pk,raw)
文件“C:\Python34\lib\site packages\django\db\models\base.py”,第885行,插入
使用=使用,原始=原始)
文件“C:\Python34\lib\site packages\django\db\models\manager.py”,第127行,在manager\u方法中
返回getattr(self.get_queryset(),name)(*args,**kwargs)
文件“C:\Python34\lib\site packages\django\db\models\query.py”,第920行,插入
return query.get\u编译器(using=using).execute\u sql(return\u id)
文件“C:\Python34\lib\site packages\django\db\models\sql\compiler.py”,第973行,在execute\u sql中
对于sql,self.as_sql()中的参数为:
as\U sql中的文件“C:\Python34\lib\site packages\django\db\models\sql\compiler.py”,第931行
对于self.query.objs中的obj
文件“C:\Python34\lib\site packages\django\db\models\sql\compiler.py”,第931行,在
对于self.query.objs中的obj
文件“C:\Python34\lib\site packages\django\db\models\sql\compiler.py”,第929行,在
)场中的f
文件“C:\Python34\lib\site packages\django\db\models\fields\files.py”,第315行,保存前
file.save(file.name,file,save=False)
文件“C:\Python34\lib\site packages\django\db\models\fields\files.py”,第94行,保存
self.name=self.storage.save(名称、内容、最大长度=self.field.max_长度)
文件“C:\Python34\lib\site packages\django\core\files\storage.py”,第64行,保存
name=self.\u保存(名称、内容)
文件“C:\Python34\lib\site packages\django\core\files\storage.py”,第253行,保存
对于content.chunks()中的块:
文件“C:\Python34\lib\site packages\django\core\files\base.py”,第85行,分块
data=self.read(块大小)
文件“C:\Python34\lib\codecs.py”,第313行,解码
(结果,消耗)=自身缓冲区解码(数据,自身错误,最终)
UnicodeDecodeError:“utf-8”编解码器无法解码位置21中的字节0xff:无效的开始字节
谁能告诉我命令的编码问题在哪里


谢谢大家!

使用像这样的
open
函数
open('C:\\…',encoding='utf-8')
意味着用utf-8编码读取我的文本文件。因为您试图读取mp3文件(二进制文件),所以这不起作用

读取它的方法是:
open('C:\\coolSong.mp3',mode='rb')
,意思是读取我的二进制文件


在这里签出关于和的非常好的解释。

您是否尝试过在不使用
encoding='utf-8'
的情况下使用
open()
?编码应仅用于文本。是的,我已尝试删除编码,但出现此错误
UnicodeDecodeError:“charmap”编解码器无法解码位置586处的字节0x81:字符映射到
默认模式为“r”(读取文本文件),请使用
open(“C:…”,mode='b')
抱歉,必须是
mode='rb'
谢谢!它现在解决了这个问题:)你能把这个作为答案贴出来吗?这样我就可以检查它是否解决了?