通过ajax从python返回unicode字符串
Posted
技术标签:
【中文标题】通过ajax从python返回unicode字符串【英文标题】:Return unicode string from python via ajax 【发布时间】:2010-04-08 15:44:04 【问题描述】:我有一个小型 web 应用程序,它在服务器端运行 Python,在客户端运行 javascript (jQuery)。 现在,根据某个请求,我的 Python 脚本返回一个 unicode 字符串,并且客户端应该将该字符串放在浏览器的 div 中。但是我从 Python 得到一个 unicode 编码错误。
如果我从 shell(debian linux 上的 bash)运行脚本,脚本运行良好并打印 unicode 字符串。
有什么想法吗?
谢谢!
编辑
这是导致错误的打印语句:
print u'öäü°'
这是我收到的错误消息: UnicodeEncodeError: 'ascii' codec can't encode characters in position 34-36: ordinal not in range(128)
但是我只在通过 ajax ( $('#somediv').load('myscript.py'); ) 调用脚本时收到该消息
谢谢!
【问题讨论】:
【参考方案1】:如果 python 解释器无法确定sys.stdout
ascii 的编码被用作后备但字符串中的字符不是 ascii 的一部分,因此会引发UnicodeEncodeError
异常。
一种解决方案是使用.encode(sys.stdout.encoding or "utf-8")
之类的东西自己对字符串进行编码。这样 utf-8 被用作后备而不是 ascii。
【讨论】:
以上是关于通过ajax从python返回unicode字符串的主要内容,如果未能解决你的问题,请参考以下文章
从 Python 字符串中删除零宽度空格 unicode 字符
通过 AJAX/innerHTML 显示部分 Unicode 编码的数据
Python 2如何将values_list操作返回的unicode列表更改为字符串列表