我对Apache整体上都很陌生,因为我刚刚开始使用Web开发,所以如果我没有提供足够的信息,请询问更多细节。
我正在使用Lion附带的开箱即用的Apache,我创建了一个Python应用程序,每隔一段时间就需要打印出一个UTF-8字符。
然而,无论我使用什么方法,或者我尝试了多少,当我尝试打印出一个UTF-8字符时,它会抛出一个500 Internal Server Error
,而我将一无所有。
我尝试过的各种事情:
# -*- coding: utf-8 -*-
。).decode('utf-8')
功能打印出角色。 (这导致打印出3个单独的字符。)我想不出别的什么。 这就是我在这里问过的原因。
有什么建议吗?
由于 〜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
答案 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,但也许这会有所帮助!