Python 关于Mac OS X Lion上的Apache

Python 关于Mac OS X Lion上的Apache,python,macos,apache,encoding,utf-8,Python,Macos,Apache,Encoding,Utf 8,总体而言,我对Apache还比较陌生,因为我刚刚开始Web开发,所以如果我没有提供足够的信息,请询问更多细节 我使用的是Lion附带的现成Apache,我创建了一个Python应用程序,每隔一段时间就需要打印一个UTF-8字符 然而,无论我使用什么方法,或者我尝试了多少,当我试图打印一个UTF-8字符时,它都会抛出一个500内部服务器错误,我将一无所获 我尝试过的各种事情: 直接从Python代码打印出字符(代码顶部有#-*-coding:utf-8-*-) 使用.decode('utf-8'

总体而言,我对Apache还比较陌生,因为我刚刚开始Web开发,所以如果我没有提供足够的信息,请询问更多细节

我使用的是Lion附带的现成Apache,我创建了一个Python应用程序,每隔一段时间就需要打印一个UTF-8字符

然而,无论我使用什么方法,或者我尝试了多少,当我试图打印一个UTF-8字符时,它都会抛出一个
500内部服务器错误
,我将一无所获

我尝试过的各种事情:

  • 直接从Python代码打印出字符(代码顶部有
    #-*-coding:utf-8-*-
  • 使用
    .decode('utf-8')
    功能打印出字符。(这将导致打印出3个单独的字符。)
  • 打印出一个占位符,然后打印出Jquery,它将用符号替换占位符(页面会抛出一个内部服务器错误)
  • 打印出一个占位符,然后打印出一个指向将替换它的Jquery脚本的链接。(Firebug说Firefox在尝试访问脚本时出现500服务器错误。)
我想不出别的了。 这就是我在这里问的原因

有什么建议吗

谢谢 ~z~龙之门

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

<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 
:“ascii”编解码器无法解码位置0:序号不在范围(128)中的字节0xe2
args=('ascii','\xe2\x80\xa2',0,1',序号不在范围内(128)'
编码='ascii'
结束=1
消息=“”
对象='\xe2\x80\xa2'
原因='序号不在范围内(128)'
开始=0

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

内容类型:text/html;字符集=UTF-8
或者使用等效的
标记(位于HTML的
部分):


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

至于第一次尝试,使用
#-*-编码:utf-8-*-
,我想这是因为Apache不知道如何解释utf-8源文件

再说一次,我对在Apache上运行Python并不十分熟悉,但这可能会有所帮助

你必须阅读,以便对一般问题有所了解

一旦您了解了这一点,那么您应该学习如何在Python中正确处理unicode,我认为以下网站应该是有用的,尽管很长:

无论您做什么,请不要在理解unicode上略过或跳过-否则您将继续遇到微妙的问题


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

我不太熟悉Python作为一种web语言,但是如果在请求中发送正确的UTF-8内容类型/字符集HTTP头或等效的HTML元标记,第二种方法可能会正常工作。浏览器可能正在尝试使用ISO-8859-1对其进行解码。正如我所说的,我对这一点很陌生,所以你能举一个这样的元标记或头的例子吗?这实际上与Apache或Mac OS X无关:)只是python和unicode,我建议改为使用这两个标记。我认为这与Apache有关,因为我试着在终端上运行完全相同的脚本,它可以很好地打印出UTF-8字符。好的,我已经试过了。但现在我在主要问题上犯了一个错误。
<meta http-equiv="Content-type" value="text/html; charset=UTF-8" />