Найти - Пользователи
Полная версия: Как получить i-ую букву строки в UTF-8?
Начало » Python для новичков » Как получить i-ую букву строки в UTF-8?
1 2 3
The gray Cardinal
Вот маленький FAQ:
http://forum.script-coding.info/viewtopic.php?id=845
pythonwin
Butjok, какая ОС? и какая кодировка по-умолчанию в консоли?
Butjok
Я пытаюсь написать простой CGI-скрипт под Windows (использую Denwer):
#!/usr/bin/python
# -*- coding: utf8 -*-

import cgitb; cgitb.enable()

print 'Content-Type: text/html; charset=utf8'
print

s = u'фыва'
print s[0].encode('utf8') # Только так работает
А нельзя где-нибудь указать, чтобы при печати или конвертации в str() использовались utf8-кодеки?
igor.kaist
Не забывай сам файл сохранять в utf-8! Тогда можно просто делать так:
a='фыва'
print a[0]
в денвере все работает.. Проверил лично..
Butjok
igor.kaist, ну вот, я сохранил файл в UTF-8 в отметкой BOM:
#!/usr/bin/python

import cgitb; cgitb.enable()

print 'Content-Type: text/html; charset=utf8'
print

a = 'фыва'
print a[0]
Выводит вопросик (кодировку браузера проверял - UTF-8).
igor.kaist
Хм.. У меня все работает нормально.
Попробуй убери bom и скажи #-*-coding:utf-8-*-
Butjok
igor.kaist, все так же и осталось, выводится вопросик.
Butjok
В общем я почти разобрался.
Python не может вычислить выходную кодировку sys.stdout.encoding, поэтому, видимо, придется все время писать .encode('utf-8') либо написать обертку.
А код:
a='фыва'
print a[0]
Вообще не должен работать для файла в UTF-8.
igor.kaist
У меня сайт через cgi работает.. Через print вывожу.. Правда cp1251, но разницы не должно быть..
Butjok
igor.kaist, как раз разница здесь огромная. UTF-8 - это многобайтовая кодировка, а cp1251 - однобайтовая.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB