通过Ajax从Python返回Unicode字符串

0 投票
1 回答
569 浏览
提问于 2025-04-15 21:23

我有一个小的网页应用,服务器端用的是Python,客户端用的是JavaScript(jQuery)。

现在在某个请求下,我的Python脚本返回了一个Unicode字符串,客户端应该把这个字符串放到浏览器的一个div里。但是我在Python中遇到了Unicode编码错误。

如果我在命令行(在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 个回答

3

如果Python解释器无法确定sys.stdout的编码方式,它会默认使用ascii编码。但是,如果字符串中的字符不属于ascii编码,就会出现UnicodeEncodeError这个错误。

解决这个问题的方法是自己对字符串进行编码,可以使用类似.encode(sys.stdout.encoding or "utf-8")的方式。这样的话,如果找不到合适的编码,就会使用utf-8作为备选,而不是ascii。

撰写回答