通过Ajax从Python返回Unicode字符串
我有一个小的网页应用,服务器端用的是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。