【问题标题】:Regarding Apache on Mac OS X Lion关于 Mac OS X Lion 上的 Apache
【发布时间】:2012-02-08 12:50:56
【问题描述】:

作为一个整体,我对 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 

【问题讨论】:

  • 我不太熟悉 Python 作为一种网络语言,但如果您在要求。浏览器可能正在尝试使用 ISO-8859-1 对其进行解码。
  • 正如我所说,我对此很陌生,所以你能举一个这样的元标记或标题的例子吗?
  • 这实际上与 Apache 或 Mac OS X 无关。:) 只是 python 和 unicode,我建议改用这两个标签。
  • 我认为它与 Apache 有关,因为我尝试在终端中运行完全相同的脚本,并且它可以很好地打印出 UTF-8 字符。

标签: python macos apache encoding utf-8


【解决方案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,这将不起作用 - 您想要 编码 em>它!

【讨论】:

    【解决方案2】:

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

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

    或使用等效的 &lt;meta&gt; 标记(位于 HTML 中的 &lt;head&gt; 部分):

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

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

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

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

    【讨论】:

    • 好的,我试过了。但现在我收到一个关于主要问题的错误。
    猜你喜欢
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2012-03-22
    • 2012-04-05
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多