Форум сайта python.su
вот код:
#!/usr/bin/python
# -*- coding: utf-8 -*-
sTring = ‘Привет, я питон’
print “1. %s” % ( type( sTring ), )
print “2. %s” % ( sTring, )
aTest =
print “3. %s” % ( sTring, )
print “4. %s” % ( type(sTring ), )
print “5. %s” % ( , )
aTest.append(sTring)
print “6. %s” % (aTest, )
for sT in aTest:
print “7. %s” % ( sT, )
print “8. %s” % ( type( sT ) , )
Почему у меня выод вот такой:
1. <type ‘str’>
2. Привет, я питон
3. �
4. <type ‘str’>
5.
6.
7. Привет, я питон
8. <type ‘str’>
___________
locale
LANG=ru_RU.UTF-8
….
ну, кароче, все у меня в УТФ.
_________________________
Вопрос такой, кочему при выводе всей строки у меня выводится по русски, а если 1 символ, то уже нет ?
Форум забит воплями о кодировке, которая решаеться простым поиском в гугле и написанием # -*- coding: utf-8 -*- в начале скрипта
вопрос самый для меня важный из этого ( с остальным я смирился) - это третий пункт? почему вопрос то?
у меня все у утф.
переводить все на u'Привет я питон' , не очень хочется.
Спасибо.
Если эта тема обсуждалась просто тыкните на нее.
П.С.
В питоне все устраивает, но ситуация с уникодом непонятна.
Отредактировано (Март 16, 2009 00:32:42)
Офлайн
Потому что unicode != utf-8
А именно в utf-8 кодировке символ кодируется от одного до 4 или 6 байт(не помню). Символы кириллицы кодируются больше чем одним байтом. Поэтому когда Вы работаете со строкой в utf-8 то при получении одного символа Вы реально получаете один байт. Работать нужно с юникод строками а вывод на stdout или в файл или куда-нибудь еще нужно уже кодировать в utf-8 или как Вам нравится.
И это было описано на форуме.
Офлайн
sTring = u'Привет, я питон'
я думаю так попродуй
Офлайн
Не хочу разводить флейм и флуд, но:
CheshireKat
переводить все на u'Привет я питон' , не очень хочется.
sypper-pitИ не совсем понял смысл этого:
sTring = u'Привет, я питон'
я думаю так попродуй
cutwaterПочему один байт то получаем тогда, если кириллица кодируется больше, чем одним байтом?
Символы кириллицы кодируются больше чем одним байтом. Поэтому когда Вы работаете со строкой в utf-8 то при получении одного символа Вы реально получаете один байт.
Офлайн
Читать о строках в питоне.
Почему один байт то получаем тогда, если кириллица кодируется больше, чем одним байтом?Опять же читать о различии байт-строк и юникод-строк.
Офлайн