Найти - Пользователи
Полная версия: Есть ли возможность сделать русские буквы в STR типе ?
Начало » Python для новичков » Есть ли возможность сделать русские буквы в STR типе ?
1
CheshireKat
вот код:
#!/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. &#65533;
4. <type ‘str’>
5.
6.
7. Привет, я питон
8. <type ‘str’>

___________
locale

LANG=ru_RU.UTF-8
….
ну, кароче, все у меня в УТФ.
_________________________

Вопрос такой, кочему при выводе всей строки у меня выводится по русски, а если 1 символ, то уже нет ?

Форум забит воплями о кодировке, которая решаеться простым поиском в гугле и написанием # -*- coding: utf-8 -*- в начале скрипта

вопрос самый для меня важный из этого ( с остальным я смирился) - это третий пункт? почему вопрос то?

у меня все у утф.

переводить все на u'Привет я питон' , не очень хочется.


Спасибо.

Если эта тема обсуждалась просто тыкните на нее.

П.С.

В питоне все устраивает, но ситуация с уникодом непонятна.
cutwater
Потому что unicode != utf-8

А именно в utf-8 кодировке символ кодируется от одного до 4 или 6 байт(не помню). Символы кириллицы кодируются больше чем одним байтом. Поэтому когда Вы работаете со строкой в utf-8 то при получении одного символа Вы реально получаете один байт. Работать нужно с юникод строками а вывод на stdout или в файл или куда-нибудь еще нужно уже кодировать в utf-8 или как Вам нравится.

И это было описано на форуме.
sypper-pit
sTring = u'Привет, я питон'

я думаю так попродуй
lizzard
Не хочу разводить флейм и флуд, но:

CheshireKat
переводить все на u'Привет я питон' , не очень хочется.
sypper-pit
sTring = u'Привет, я питон'

я думаю так попродуй
И не совсем понял смысл этого:
cutwater
Символы кириллицы кодируются больше чем одним байтом. Поэтому когда Вы работаете со строкой в utf-8 то при получении одного символа Вы реально получаете один байт.
Почему один байт то получаем тогда, если кириллица кодируется больше, чем одним байтом?
cutwater
Читать о строках в питоне.
Почему один байт то получаем тогда, если кириллица кодируется больше, чем одним байтом?
Опять же читать о различии байт-строк и юникод-строк.
Если строка не юникод, то питон по сути не знает ничего о том что один символ закодирован более чем одним байтом и работает с отдельными байтами. юникод упрощенно кодировко-независимое представление символа (подробней читать стандарт unicode) и питон корректно работает со строкой в юникод-представлении.
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