无法在Python中打印特殊字符(编码,特殊字符,lighttpd)

时间:2013-10-21 19:52:01

标签: python encoding lighttpd

我在打印特殊字符时遇到问题。 如果我想打印出一个包含特殊字符的简单字符串,并在浏览器中打开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"

2 个答案:

答案 0 :(得分:0)

您使用魔术注释声明的编码被Python用来解释您的字符串文字。但你只有一半。 您的文件必须实际编码为utf-8 才能生效。

使用优秀的文本编辑器(例如Notepad ++),您可以控制文件在磁盘上的实际编码方式。

请注意,您如何检查使用正确的编码是一个雷区:您的字符串可能会在发送到浏览器之前通过文件存储,然后是各种表示(例如变量,数据库等)(涉及内容类型声明和潜在的自动检测)。我强烈建议您分别检查所有这些步骤。

答案 1 :(得分:0)

最后我找到了解决方案:

output = message
json.dumps(output)
return output

无效: - )

output = message
return json.dumps(output)

是返回json的正确方法。