Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';utf8';编解码器可以';t解码字节0xbd CSV文件1/2字符_Python_Python 2.7_Csv_Unicode - Fatal编程技术网

Python ';utf8';编解码器可以';t解码字节0xbd CSV文件1/2字符

Python ';utf8';编解码器可以';t解码字节0xbd CSV文件1/2字符,python,python-2.7,csv,unicode,Python,Python 2.7,Csv,Unicode,我正在通过Django上载文件控件读取CSV文件 我想将½(1/2)存储到数据库中,但它给出了以下例外情况: 'utf8' codec can't decode byte 0xbd C.S.V. file 1/2 Char UnicodeDecodeError at /admin/request_system/customers/upload/ “utf8”编解码器无法解码位置45处的字节0xbd:无效的开始字节您的CSV文件不是utf8格式,因此解码器看到无效(即非utf8)字节序列。找

我正在通过Django上载文件控件读取CSV文件

我想将
½
(1/2)存储到数据库中,但它给出了以下例外情况:

  'utf8' codec can't decode byte 0xbd C.S.V. file 1/2 Char
UnicodeDecodeError at /admin/request_system/customers/upload/

“utf8”编解码器无法解码位置45处的字节0xbd:无效的开始字节

您的CSV文件不是utf8格式,因此解码器看到无效(即非utf8)字节序列。找出正确的格式和/或将CSV文件重新保存为utf8,然后再次上载


0xbd
是拉丁语-1中的½字符,因此这很可能就是您现在得到的字符。utf8将其表示为两字节序列
\xc2\xbd

您使用了错误的字符集,可能是Windows-1252。它不是Unicode或utf-8

s = s.decode('windows-1252')

你能告诉我们Django视图的代码吗?你是如何读取CSV文件的?你确定它是utf-8编码的吗?使用open(Customer.get_temp_file_name(),'r')作为数据文件:reader=MyFileReader(_file=data_file)def_init_(self,_file=None):if_file:self.data_file=CSV.DictReader(_文件)我不确定,如果它是utf-8,因为我尝试了所有的方法来转换1/2,没有什么是正确的working@Cannon:您可以将问题添加到详细信息中。如果django需要utf8,最简单的方法是将其设为utf8。@alexis,根据错误消息,它已经在执行
解码。我敢打赌,如果已经提供了Unicode,它肯定会跳过这一点。@markransem:web上传总是通过testreams,要获得Unicode,它必须解码。您无法从web请求接收Unicode。或者你声称UTF8是Unicode;这是一种编码,而不是标准的或Python unicode值。@MartijnPieters,如果是这样的话,那么为什么它首先要进行
解码?“我承认我对Django了解不多。@MarkRansom:为什么不呢?”?既然可以操作datetime对象,为什么还要操作日期字符串呢?如果可以有数字,为什么要操纵字符串中的数字?在处理文本时,在边界处解码为unicode是有意义的。很好,我认为这是更简单的方法。只需将csv文件转换为UTF-8并再次上传即可。1/2字符已正确保存。谢谢你,不客气。请“接受”我的答案(点击bick复选标记),如果它解决了你的问题。