关于Mac OS X Lion上的Apache

时间:2012-01-12 07:36:17

标签: python macos apache encoding utf-8

我对Apache整体上都很陌生,因为我刚刚开始使用Web开发,所以如果我没有提供足够的信息,请询问更多细节。

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

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

我尝试过的各种事情:

  • 直接从Python代码打印出字符(代码顶部有# -*- coding: utf-8 -*-。)
  • 使用.decode('utf-8')功能打印出角色。 (这导致打印出3个单独的字符。)
  • 打印出占位符,然后打印出Jquery,它将用符号替换占位符(并且页面会引发内部服务器错误)
  • 打印出占位符,然后打印出一个指向Jquery脚本的链接,该脚本将替换它。 (Firebug说Firefox在尝试访问脚本时遇到500服务器错误。)

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

有什么建议吗?

由于 〜DragonXDoom

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

<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 

2 个答案:

答案 0 :(得分:1)

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

一旦你理解了这一点,那么你应该学习如何在Python中正确处理unicode,我认为以下网站应该是有用的,尽管冗长:http://boodebr.org/main/python/all-about-python-and-unicode

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

此外,您声明您已尝试使用.decode('utf-8') - 如果python已经/已经/已将数据理解为unicode,那么这将不起作用 - 您希望编码 it!

答案 1 :(得分:0)

要详细说明我的评论,您可以通过HTTP标头告诉浏览器正在传输的页面编码:

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

或使用等效的<meta>代码(位于HTML中的<head>部分):

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

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

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

同样,我并不熟悉在Apache上运行Python,但也许这会有所帮助!