Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 31, 2008 09:11:19

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

Офлайн

#2 Окт. 31, 2008 15:24:12

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

Butjok, какая ОС? и какая кодировка по-умолчанию в консоли?



Офлайн

#3 Окт. 31, 2008 18:59:24

Butjok
От:
Зарегистрирован: 2008-10-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

Я пытаюсь написать простой 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-кодеки?



Офлайн

#4 Окт. 31, 2008 19:15:50

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

Не забывай сам файл сохранять в utf-8! Тогда можно просто делать так:

a='фыва'
print a[0]
в денвере все работает.. Проверил лично..



Офлайн

#5 Окт. 31, 2008 19:22:59

Butjok
От:
Зарегистрирован: 2008-10-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

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).



Офлайн

#6 Окт. 31, 2008 19:33:55

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

Хм.. У меня все работает нормально.
Попробуй убери bom и скажи #-*-coding:utf-8-*-



Офлайн

#7 Окт. 31, 2008 19:35:23

Butjok
От:
Зарегистрирован: 2008-10-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

igor.kaist, все так же и осталось, выводится вопросик.



Офлайн

#8 Окт. 31, 2008 20:07:34

Butjok
От:
Зарегистрирован: 2008-10-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

В общем я почти разобрался.
Python не может вычислить выходную кодировку sys.stdout.encoding, поэтому, видимо, придется все время писать .encode('utf-8') либо написать обертку.
А код:

a='фыва'
print a[0]
Вообще не должен работать для файла в UTF-8.



Офлайн

#9 Окт. 31, 2008 20:30:39

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

У меня сайт через cgi работает.. Через print вывожу.. Правда cp1251, но разницы не должно быть..



Офлайн

#10 Окт. 31, 2008 20:52:32

Butjok
От:
Зарегистрирован: 2008-10-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить i-ую букву строки в UTF-8?

igor.kaist, как раз разница здесь огромная. UTF-8 - это многобайтовая кодировка, а cp1251 - однобайтовая.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version