我在打印特殊字符时遇到问题。 如果我想打印出一个包含特殊字符的简单字符串,并在浏览器中打开python文件,则字符串不会显示。 我试过把
#!/usr/bin/env python3.3
# -*- coding: utf-8 -*-
在每种可能的组合中排在最前面 - 没有用。 我尝试过使用stdout和使用.encode('utf8')编码字符串的解决方案。 最后一个解决方案帮助了我,但我的字符串然后以字节字符串形式呈现,我需要切换JSON,所以除了打印出特殊字符的空白JSON字符串之外,我不想要任何东西。 是否有可能,lighttpd存在问题,不允许我以UTF-8打印?我是否必须先更改lighttpd.conf?
Atm我的配置文件如下所示:
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
# "mod_rewrite",
)
server.document-root = "/var/www"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
" index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" , ".py")
## Use ipv6 if available
#include_shell "/usr/share/lighttpd/use-ipv6.pl"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "text/plain; charset=utf-8", "text/html; charset=utf-8", "text/css; charset=utf-8", "text/xml; charset=utf-8", "text/javascript; charset=utf-8", "text/x-js", "application/x$
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
答案 0 :(得分:0)
您使用魔术注释声明的编码被Python用来解释您的字符串文字。但你只有一半。 您的文件必须实际编码为utf-8 才能生效。
使用优秀的文本编辑器(例如Notepad ++),您可以控制文件在磁盘上的实际编码方式。
请注意,您如何检查使用正确的编码是一个雷区:您的字符串可能会在发送到浏览器之前通过文件存储,然后是各种表示(例如变量,数据库等)(涉及内容类型声明和潜在的自动检测)。我强烈建议您分别检查所有这些步骤。
答案 1 :(得分:0)
最后我找到了解决方案:
output = message
json.dumps(output)
return output
无效: - )
output = message
return json.dumps(output)
是返回json的正确方法。