通过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 为单个 Unicode 字符串返回长度为 2

Python 2如何将values_list操作返回的unicode列表更改为字符串列表

utf8_unicode_ci 的 JSON 数据的 PHP 标头中的内容类型字符集 - Ajax 调用

从 Ajax 方法返回字符串结果