UnicodeEncodeError: 'ascii' codec can't encode characters in position
来源:互联网 发布:焊接软件 编辑:程序博客网 时间:2024/04/30 05:27
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
Python UnicodeEncodeError: 'ascii' codec can't encode character
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128)
If you've ever gotten this error, Django's smart_str
function might be able to help. I found this from James Bennett's article,Unicode in the real world. He provides a very good explanation of Python's Unicode and bytestrings, their use in Django, and using Django's Unicode utilities for working with non-Unicode-friendly Python libraries. Here are my notes from his article as it applies to the above error. Much of the wording is directly from James Bennett's article.
This error occurs when you pass a Unicode string containing non-English characters (Unicode characters beyond 128) to something that expects an ASCII bytestring. The default encoding for a Python bytestring is ASCII, "which handles exactly 128 (English) characters". This is why trying to convert Unicode characters beyond 128 produces the error.
The good news is that you can encode Python bytestrings in other encodings besides ASCII. Django'ssmart_str
function in the django.utils.encoding
module, converts a Unicode string to a bytestring using a default encoding of UTF-8.
Here is an example using the built-in function, str
:
a = u'\xa1'print str(a) # this throws an exception
Results:
Traceback (most recent call last): File "unicode_ex.py", line 3, in print str(a) # this throws an exceptionUnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128)
Here is an example using smart_str
:
from django.utils.encoding import smart_str, smart_unicodea = u'\xa1'print smart_str(a)
- UnicodeEncodeError: 'ascii' codec can't encode characters in position
- UnicodeEncodeError: 'ascii' codec can't encode characters in position
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 解决方法
- 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position
- UnicodeEncodeError: 'ascii' codec can't encode characters in position问题
- UnicodeEncodeError: 'ascii' codec can't encode characters in position
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range(128
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128
- UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx ordinal not in range(12
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 26-35: ordinal not in range(12
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
- python编码错误:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx ordinal not in
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128
- UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-15: ordinal not in range(128
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128
- Android开发之向桌面添加快捷方式
- scrollview的添加内容不显示(偶尔)
- 安全电子邮件系统解决方案
- TinyXml的使用
- linux下tftp、samba、nfs服务的配置和启用
- UnicodeEncodeError: 'ascii' codec can't encode characters in position
- js nodejs 博客
- FileInputStream/FileOutputStream的应用
- 使用WMI和性能计数器监控远程服务器权限设置
- Android外部库引用
- jcifs lib can't detect NAS
- 黑马程序员之----------java 7K面试题之银行调度系统
- 数据啊刚卡耐腐蚀
- Change Hash Array keys to strings