2012-01-12 146 views
3

对于Apache来说,我是一个相当新手,因为我刚刚开始Web开发,所以如果我没有提供足够的信息,请询问更多细节。关于Mac OS X Lion上的Apache

我使用Lion附带的开箱即用的Apache,并且我创建了一个Python应用程序,每隔一段时间需要打印一个UTF-8字符。

但是,无论我使用什么方法,或者尝试了多少次,当我尝试打印出UTF-8字符时,它将丢弃500 Internal Server Error,而我将一无所有。

我已经试过各种事情:(随着# -*- coding: utf-8 -*-在代码的顶部)

  • 打印出的字符直接从Python代码
  • 打印出来使用.decode('utf-8')功能的字符。 (这会导致打印出3个单独的字符)
  • 打印出一个占位符,然后打印出将用符号代替占位符的Jquery(并且页面引发内部服务器错误)
  • 打印出一个占位符,然后打印出一个链接到一个将替换它的Jquery脚本。 (Firebug说,当试图访问脚本时,Firefox得到500服务器错误。)

我想不出别的什么。 这就是为什么我在这里问过。

有什么建议吗?

感谢 〜DragonXDoom

编辑:下面尝试了威尔的建议之后,我现在得到以下错误。

<type 'exceptions.UnicodeDecodeError'>: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) 
    args = ('ascii', '\xe2\x80\xa2', 0, 1, 'ordinal not in range(128)') 
    encoding = 'ascii' 
    end = 1 
    message = '' 
    object = '\xe2\x80\xa2' 
    reason = 'ordinal not in range(128)' 
    start = 0 
+1

我并不熟悉Python作为Web语言,但如果您在请求中发送正确的UTF-8内容类型/字符集HTTP标头或同等HTML元标记,则第二种方法可能会正常工作。浏览器可能试图使用ISO-8859-1来解码它。 – 2012-01-12 07:41:17

+0

正如我所说,我很新,所以你可以举一个这样的meta标签或头的例子吗? – DragonXDoom 2012-01-12 07:45:06

+0

这实际上与Apache或Mac OS X无关。:)只是python和unicode,我建议使用这两个标签来代替。 – Arafangion 2012-01-12 08:33:26

回答

1

您必须阅读http://www.joelonsoftware.com/articles/Unicode.html,以便您对一般问题有所了解。

一旦你明白这一点,那么你应该学会如何处理Unicode的正确使用Python,我认为下面的网站应该是有用的,虽然很长:http://boodebr.org/main/python/all-about-python-and-unicode

不管你做什么,请不要吝啬或跳过在理解unicode - 否则你将继续有微妙的问题。

而且,你的状态,你已经尝试使用.decode(“UTF-8”) - 这是不行的,如果Python有/已经/理解数据为Unicode - 要编码吧!

0

要阐述我的意见,你可以知道哪些编码该页既可使用HTTP标头传输的浏览器:

Content-type: text/html; charset=UTF-8 

或等效<meta>标签(它出现在在你的HTML <head>部分):

<meta http-equiv="Content-type" value="text/html; charset=UTF-8" /> 

这样,它应该正确解释UT它收到的F-8字符。 (text/html可以替换为更合适的MIME类型。)

至于第一次尝试,# -*- coding: utf-8 -*-,我期望这是因为Apache不知道如何解释UTF-8源文件。

再一次,我不是很熟悉在Apache上运行Python,但也许这会有所帮助!

+0

好吧,我已经试过了。 但现在我得到一个关于主要问题的错误。 – DragonXDoom 2012-01-12 08:21:51