Относительно Apache на Mac OS X Lion - PullRequest
3 голосов
/ 12 января 2012

Я довольно новичок в Apache в целом, так как я только начал веб-разработку, поэтому, пожалуйста, попросите более подробную информацию, если я не предоставил достаточно.

Я используюиз коробки Apache, которая поставляется вместе с Lion, и я создал приложение Python, которому время от времени требуется распечатывать символ UTF-8.

Однако, независимо от того, какой метод я использую, илинасколько я стараюсь, когда бы я ни пытался распечатать символ UTF-8, он выбрасывает 500 Internal Server Error, и у меня ничего не останется.

Различные вещи, которые я пробовал:

  • Распечатка символа непосредственно из кода Python (с # -*- coding: utf-8 -*- вверху кода.)
  • Распечатка символа с использованием функции .decode('utf-8').(Это приводит к распечатке 3 отдельных символов.)
  • Распечатка заполнителя, а затем распечатка Jquery, который заменит заполнитель на символ (А на странице появляется внутренняя ошибка сервера)
  • Распечатка заполнителя, а затем печать ссылки на скрипт Jquery, который заменит его.(Firebug говорит, что Firefox получает 500 Server Error при попытке доступа к сценарию.)

Я не могу думать ни о чем другом.Вот почему я спросил здесь.

Есть предложения?

Спасибо ~ 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 

Ответы [ 2 ]

1 голос
/ 12 января 2012

Вы должны прочитать http://www.joelonsoftware.com/articles/Unicode.html, чтобы иметь представление об общей проблеме.

Как только вы поймете это, вы должны научиться правильно обрабатывать юникод в Python, я думаю, что следующий веб-сайт должен быть полезным, хотя и длительным: http://boodebr.org/main/python/all-about-python-and-unicode

Что бы вы ни делали, пожалуйста, НЕ экономьте и не пропускайте понимание юникода - в противном случае у вас останутся тонкие проблемы.

Кроме того, вы заявляете, что пытались использовать .decode ('utf-8') - это не сработает, если python воспринимает / уже / воспринимает данные как Unicode - вы хотите кодировать это!

0 голосов
/ 12 января 2012

Чтобы уточнить мой комментарий, вы можете указать браузеру, в какую кодировку передается страница, либо с заголовком HTTP:

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

, либо с эквивалентным тегом <meta> (который идет в<head> в вашем HTML):

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

Таким образом, должно правильно интерпретировать получаемые символы UTF-8.(text/html может быть заменен более подходящим типом MIME.)

Что касается первой попытки, с # -*- coding: utf-8 -*-, я ожидаю, что это потому, что Apache не знает, как интерпретировать исходные файлы UTF-8.

Опять же, я не очень знаком с работой Python на Apache, но, возможно, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...