У меня есть проект на Python 2.6, и я хотел бы написать сообщение utf-8 на стандартный вывод, используя системную кодировку. Однако похоже, что такой функции не существует до Python 3.2:
PySys_FormatStdout
http://docs.python.org/dev/c-api/sys.html
Есть ли способ сделать это из Python 2.6?
Чтобы уточнить, у меня есть баннер, который нужно распечатать после Py_Initialize() и до запуска основного интерпретатора. Строка представляет собой c-литерал, содержащий: "\n и авторские права \xC2\xA9"
где \xC2\xA9 — это символ авторского права utf-8. Я проверил в gdb, что символ авторского права закодирован правильно.
Обновление: Я просто решил, что все это горе не нужно, и я собираюсь удалить оскорбительный символ из баннера при запуске. С этим слишком много проблем, а документации не хватает. Я ожидал, что это будет похоже на Tcl, где:
- C-API встроенного интерпретатора упростит запись stdout в unicode в системной кодировке, а не в кодировке ascii по умолчанию.
- Исключение не будет выдано, если в текущей кодировке не существует символа нарушения. Вместо этого будет отображаться некоторый символ замены по умолчанию.
- Дополнительные модули (например, sys) не нужно импортировать только для того, чтобы узнать, что такое системная кодировка.
errors="replace"
вместоerrors="strict"
, если нужно 3.PyUnicode_GetDefaultEncoding()
- person jfs   schedule 23.12.2010