Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: русские буквы  (Прочитано 1093 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн A.J

  • Автор темы
  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
русские буквы
« : 07 Сентября 2014, 15:23:45 »
Добрый день!
Я поставил python 2.7.8 версия но почему когда я добавляю русское слово в список.
Выводит черт знает что.
Кодировка стоит # -*- coding: utf-8 -*- что не так.
Странно кортеже на русском выводит нормально а списки нет

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: русские буквы
« Ответ #1 : 07 Сентября 2014, 15:30:22 »
Ставьте u перед строками с юникодом. То есть, к примеру:
Код: (Python) [Выделить]
a = u'Ы'
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн A.J

  • Автор темы
  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: русские буквы
« Ответ #2 : 07 Сентября 2014, 15:52:47 »
Я ставил так s = [ u'Вася']
Но все равно выходит  вот это 
['\xd0\x92\xd0\xb0\xd1\x81\xd1\x8f']

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: русские буквы
« Ответ #3 : 07 Сентября 2014, 16:37:01 »
Ммм вот для размышления:
ilya@ilya-GE40-2OL:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [u'Ы']
>>> a
[u'\u042b']
>>> a[0]
u'\u042b'
>>> print a[0]
Ы
>>> print a
[u'\u042b']

Может подскажет, куда копать.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: русские буквы
« Ответ #4 : 07 Сентября 2014, 17:40:13 »
Цитировать
['\xd0\x92\xd0\xb0\xd1\x81\xd1\x8f']

Это не unicode а обычный str.
Проверьте не происходит ли каких нибудь преобразований строки.
Алсо и str можно сконвертировать в unicode:
>>> s = ['Вася']
>>> s[0]
'\xd0\x92\xd0\xb0\xd1\x81\xd1\x8f'
>>> s1 = [u'Вася']
>>> s1[0]
u'\u0412\u0430\u0441\u044f'
>>> s[0].decode('utf-8')
u'\u0412\u0430\u0441\u044f'
>>> s[0].decode('utf-8') == s1[0]
True

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: русские буквы
« Ответ #5 : 07 Сентября 2014, 18:07:19 »

Код: (Python) [Выделить]
>>> a = 'Вася'
>>> print(a.decode('utf-8'))
Вася
>>>

Пользователь решил продолжить мысль 07 Сентября 2014, 22:55:13:
Со списками так же:
Код: (Python) [Выделить]
>>> a = ['Вася']
>>> a
['\xd0\x92\xd0\xb0\xd1\x81\xd1\x8f']
>>> print(a[0].decode('utf-8'))
Вася
>>>
Да и с кортежами то же самое, не знаю, почему они у кого-то правильно отображаются без перекодировки:
Код: (Python) [Выделить]
>>> b = ('Петя',)
>>> b
('\xd0\x9f\xd0\xb5\xd1\x82\xd1\x8f',)
>>> print(b[0].decode('utf-8'))
Петя
>>>
« Последнее редактирование: 07 Сентября 2014, 22:55:13 от Jack Sparrow »
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: русские буквы
« Ответ #6 : 08 Сентября 2014, 05:07:44 »
Цитировать
почему они у кого-то правильно отображаются без перекодировки

Во втором питоне str в отличие от unicode ни у кого в принципе не могут "правильно" отображаться без явного указания кодировки, там это (за исключением ascii) набор байт неопределенной кодировки.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: русские буквы
« Ответ #7 : 16 Сентября 2014, 12:18:52 »
в 2.7 с unicode работать можно - но гиморойно. Для себя решил что 2.7 пора хоронить... в 3.х - все уже причесано с unicode.

Вот тут - подробнее писал об этом.
« Последнее редактирование: 16 Сентября 2014, 12:29:13 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.075 секунд. Запросов: 25.