Форум сайта python.su
1
Добрый день! Только начал изучать python, появился вопрос по кодировке, убил весь день на гугление - ничего не помогает. Пример, есть скрипт:
# -*- coding: utf-8 -*- print u"Привет"
Отредактировано S1lent (Апрель 24, 2012 16:05:13)
Офлайн
3
сохранен в utf-8Уверены?
# -*- coding: utf-8 -*- s = 'обычная строка' us = u'юникод-строка ' print type (s), isinstance (s, str) # <type'str'> True print type (us), isinstance (us, unicode) # <type'unicode'> True s2 = us.encode ('utf-8') # кодирует в обычную строку utf-8 us2 = s.decode ('utf-8') # декодирует обычную строку utf-8 в юникод-строку # или us2 = unicode (s, 'utf-8') print type (s2) # <type'str'> print type (us2) # <type'unicode'> print len('строка') # 10, потому что кодируется utf-8 (символы кодируются 1-6 байтами) print len(u'строка') # 5
Отредактировано vkopey (Апрель 24, 2012 16:33:13)
Офлайн
1
да, Notepad++ говорит UTF-8 без BOM
тоже самое говорит Sublime text 2
Офлайн
3
S1lentНовичку советую пользоваться PyDev или PyCharm. Это удобнее для изучения Python.
да, Notepad++ говорит UTF-8 без BOM
тоже самое говорит Sublime text 2
Отредактировано vkopey (Апрель 24, 2012 16:41:46)
Офлайн
1
Спасибо, pyCharm тоже имеется.
Ситуация подробней - пример из шапки топика запускается на FreeBSD 8 разными версиями интрепритатора питона (2.6 и 2.7) в обоих случаях аналогичная ошибка. Если же этот же файл скопировать на виндовую машину и запустить из cmd на виндовом интерпритаторе - всё ОК.
Офлайн
3
Добавь вначало
#!/usr/bin/env python
Отредактировано vkopey (Апрель 24, 2012 17:12:54)
Офлайн
1
ясное дело это не помогло, т.к. в любом случае запускаю скрипт в лоб
#pytnon 1.py
Офлайн
3
Есть подозрение, что проблема с локалью системы
попробуйте locale в консоли выполнить
Отредактировано Chern (Апрель 24, 2012 17:12:23)
Офлайн
1
vkopeyСпасибо огромное, действительно это то что нужно.
еще посмотри
http://python.su/forum/topic/11602/
Отредактировано S1lent (Апрель 24, 2012 17:15:15)
Офлайн
1
Отучайтесь от Windows. Если не хотите ставить на основную машину непонятный *nix, ставьте на винду виртуалку, в нее - *nix(туда - ssh, python и прочее, инструкций - в нете валом), я ставил дебиан с преднастроенными локалями во время установки. На винду - какой-нибудь SFTP-клиент, например sftp drive(создает в винде виртуальный диск с нужной директорией в виртуалке, ему нужна таблетка) и scite(надо настроить сохранение и автораспознавание UTF-8, это бесплатно). Ели вам удастся настроить этот аэробус и взлететь, вы получаете все преимущества *nix не отказываясь от пользовательского привычного окружения windows. Кстати, такой метод помогает пересесть под linux очень мягко, не нарушая сна :)
Офлайн