Django1.8: UnicodeEncodeError 'gbk' 编解码器无法编码字符 '\xbb'

Django1.8: UnicodeEncodeError 'gbk' codec can't encode character '\xbb'

我正在使用 django 1.8,在 windows7 中开发。

系统编解码器是'gbk'。

当我打电话时:

print(request.POST)

在我的视图函数中,我得到了这个错误:

UnicodeEncodeError at /mrp/list/item/purchase/0/
'gbk' codec can't encode character '\xbb' in position 206: illegal multibyte sequence

我注意到调试信息显示 META['PYTHONIOENCODING'] = 'GBK'

但是当我尝试在错误代码之前打印 python 编码时:

import sys
print(sys.getdefaultencoding())

我显示utf8!

那么为什么要使用 'GBK'?我应该在哪里更改该设置?我一直在寻找文件,但没有找到。

请帮忙!


元数据:

Variable    Value
SYSTEMROOT  
'C:\Windows'
PATH_INFO   
'/mrp/list/item/purchase/0/'
HOMEPATH    
'\Users\Alfred'
WINDOWS_TRACING_LOGFILE 
'C:\BVTBin\Tests\installpackage\csilogfile.log'
HTTP_ACCEPT_LANGUAGE    
'zh-CN,zh;q=0.8,en;q=0.6,ru;q=0.4,zh-TW;q=0.2'
DJANGO_SETTINGS_MODULE  
'ecerp.settings'
SHIM_MCCOMPAT   
'0x810000001'
USERDOMAIN  
'Alfred-PC'
SERVER_NAME 
'activate.adobe.com'
PROCESSOR_IDENTIFIER    
'Intel64 Family 6 Model 58 Stepping 9, GenuineIntel'
WINDOWS_TRACING_FLAGS   
'3'
FP_NO_HOST_CHECK    
'NO'
wsgi.file_wrapper   
''
QUERY_STRING    
''
CLASSPATH   
'.;C:\Program Files\Java\jdk1.8.0_31\lib;C:\Program '
'Files\Java\jdk1.8.0_31\lib\tools.jar;d:\java\lib'
SERVER_PROTOCOL 
'HTTP/1.1'
PYTHONIOENCODING    
'GBK'
ALLUSERSPROFILE 
'C:\ProgramData'
USERNAME    
'Alfred'
NUMBER_OF_PROCESSORS    
'4'
PROGRAMFILES(X86)   
'C:\Program Files (x86)'
HTTP_PRAGMA 
'no-cache'
PSMODULEPATH    
'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\'
TMP 
'C:\Users\Alfred\AppData\Local\Temp'
COMPUTERNAME    
'ALFRED-PC'
SESSIONNAME 
'Console'
USERPROFILE 
'C:\Users\Alfred'
SERVER_PORT 
'8000'
PROCESSOR_ARCHITECTURE  
'AMD64'
REMOTE_HOST 
''
HTTP_COOKIE 
'verify_code=eW91Y2h1YW5n; sessionid=pncf4qix2xxjvkig3ek9v9oyvgb7aouc; '
'csrftoken=daIMsNDpBbireeQsbVGRJ6tMYijwxAu8'
wsgi.multithread    
True
wsgi.input  
<_io.BufferedReader name=908>
PATHEXT 
'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY'
PROGRAMW6432    
'C:\Program Files'
PYCHARM_HOSTED  
'1'
COMMONPROGRAMW6432  
'C:\Program Files\Common Files'
HTTP_ORIGIN 
'http://localhost:8000'
WINDIR  
'C:\Windows'
GATEWAY_INTERFACE   
'CGI/1.1'
PROGRAMDATA 
'C:\ProgramData'
wsgi.multiprocess   
False
REQUEST_METHOD  
'POST'
OS  
'Windows_NT'
SERVER_SOFTWARE 
'WSGIServer/0.2'
HTTP_CONNECTION 
'keep-alive'
SYSTEMDRIVE 
'C:'
PYTHONPATH  
'D:\app\ecerp'
GRANDE  
'C:\Program Files (x86)\Fuji Xerox\DocuPrint SSW2\SimpleMonitor for AP'
JAVA_HOME   
'C:\Program Files\Java\jdk1.8.0_31'
wsgi.run_once   
False
HTTP_REFERER    
'http://localhost:8000/mrp/list/item/purchase/0/'
COMMONPROGRAMFILES  
'C:\Program Files\Common Files'
LOGONSERVER 
'\\ALFRED-PC'
PUBLIC  
'C:\Users\Public'
COMSPEC 
'C:\Windows\system32\cmd.exe'
HTTP_HOST   
'localhost:8000'
TEMP    
'C:\Users\Alfred\AppData\Local\Temp'
wsgi.errors 
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='GBK'>
PROCESSOR_REVISION  
'3a09'
COMMONPROGRAMFILES(X86) 
'C:\Program Files (x86)\Common Files'
HTTP_CACHE_CONTROL  
'no-cache'
REMOTE_ADDR 
'127.0.0.1'
HTTP_ACCEPT 
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
PROGRAMFILES    
'C:\Program Files'
HTTP_ACCEPT_ENCODING    
'gzip, deflate'
CONTENT_LENGTH  
'1266'
wsgi.url_scheme 
'http'
HOMEDRIVE   
'C:'
PROCESSOR_LEVEL 
'6'
HTTP_USER_AGENT 
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/41.0.2272.118 Safari/537.36'
RUN_MAIN    
'true'
LOCALAPPDATA    
'C:\Users\Alfred\AppData\Local'
#ENVTSLOGSSS2364    
'3014800'
PYTHONUNBUFFERED    
'1'
CSRF_COOKIE 
'daIMsNDpBbireeQsbVGRJ6tMYijwxAu8'
CONTENT_TYPE    
'application/x-www-form-urlencoded'
PATH    
'C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS '
'Client\;C:\Program Files\Intel\iCLS '
'Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program '
'Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files '
'(x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Intel\Intel(R) '
'Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) '
'Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) '
'Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) '
'Management Engine Components\IPT;C:\Program Files (x86)\Bitvise SSH '
'Client;C:\Python34;C:\Python34\Scripts;C:\Dev-Cpp\bin;C:\Program Files '
'(x86)\QuickTime\QTSystem\;C:\Program '
'Files\TortoiseGit\bin;C:\Python34\Scripts;C:\Program '
'Files\nodejs;D:\upupw\MySQL\bin;C:\Users\Alfred\AppData\Roaming\npm;C:\Program '
'Files\Java\jdk1.8.0_31\bin;C:\Development\android-sdk\platform-tools;C:\Development\android-sdk\tools'
SCRIPT_NAME 
''
wsgi.version    
(1, 0)
APPDATA 
'C:\Users\Alfred\AppData\Roaming'

最后发现是文件编码错误

新更新PycharmIDE下Windows更改了默认编码

所以我的新代码文件编码变成了GBK,应该是utf8。

然后我更改了IDE设置,更改了文件编码,一切正常。