Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 24, 2012 16:04:11

S1lent
Зарегистрирован: 2012-04-24
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблемы с utf-8

Добрый день! Только начал изучать python, появился вопрос по кодировке, убил весь день на гугление - ничего не помогает. Пример, есть скрипт:

# -*- coding: utf-8 -*-
print u"Привет"


при выполнении ошибка:

Traceback (most recent call last):
File “kod.py”, line 2, in <module>
print u'Привет'
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-5: ordinal not in range(128)

Файл естественно сохранен в utf-8. В чём может быть проблема?

Отредактировано S1lent (Апрель 24, 2012 16:05:13)

Офлайн

#2 Апрель 24, 2012 16:23:16

vkopey
От:
Зарегистрирован: 2010-09-26
Сообщения: 116
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблемы с utf-8

сохранен в 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)

Офлайн

#3 Апрель 24, 2012 16:27:59

S1lent
Зарегистрирован: 2012-04-24
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблемы с utf-8

да, Notepad++ говорит UTF-8 без BOM
тоже самое говорит Sublime text 2

Офлайн

#4 Апрель 24, 2012 16:38:55

vkopey
От:
Зарегистрирован: 2010-09-26
Сообщения: 116
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблемы с utf-8

S1lent
да, Notepad++ говорит UTF-8 без BOM
тоже самое говорит Sublime text 2
Новичку советую пользоваться PyDev или PyCharm. Это удобнее для изучения Python.



Отредактировано vkopey (Апрель 24, 2012 16:41:46)

Офлайн

#5 Апрель 24, 2012 16:44:59

S1lent
Зарегистрирован: 2012-04-24
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблемы с utf-8

Спасибо, pyCharm тоже имеется.
Ситуация подробней - пример из шапки топика запускается на FreeBSD 8 разными версиями интрепритатора питона (2.6 и 2.7) в обоих случаях аналогичная ошибка. Если же этот же файл скопировать на виндовую машину и запустить из cmd на виндовом интерпритаторе - всё ОК.

Офлайн

#6 Апрель 24, 2012 16:53:37

vkopey
От:
Зарегистрирован: 2010-09-26
Сообщения: 116
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблемы с utf-8

Добавь вначало

#!/usr/bin/env python
еще посмотри
http://python.su/forum/topic/11602/
еще интересно почитать:
http://habrahabr.ru/post/117236/



Отредактировано vkopey (Апрель 24, 2012 17:12:54)

Офлайн

#7 Апрель 24, 2012 17:08:18

S1lent
Зарегистрирован: 2012-04-24
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблемы с utf-8

ясное дело это не помогло, т.к. в любом случае запускаю скрипт в лоб
#pytnon 1.py

Офлайн

#8 Апрель 24, 2012 17:10:36

Chern
От: Киев
Зарегистрирован: 2010-09-15
Сообщения: 71
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблемы с utf-8

Есть подозрение, что проблема с локалью системы

попробуйте locale в консоли выполнить



Отредактировано Chern (Апрель 24, 2012 17:12:23)

Офлайн

#9 Апрель 24, 2012 17:14:00

S1lent
Зарегистрирован: 2012-04-24
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблемы с utf-8

vkopey
еще посмотри
http://python.su/forum/topic/11602/
Спасибо огромное, действительно это то что нужно.

Если кто встретится с подобной проблемой - необходимо чтобы во фряхе локаль стояла по дефолту utf-8.
Как это сделать подробно описано здесь http://paix.org.ua/freebsd/ru_utf8.html

Отредактировано S1lent (Апрель 24, 2012 17:15:15)

Офлайн

#10 Апрель 25, 2012 13:29:09

cpu
От:
Зарегистрирован: 2011-12-29
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблемы с utf-8

Отучайтесь от Windows. Если не хотите ставить на основную машину непонятный *nix, ставьте на винду виртуалку, в нее - *nix(туда - ssh, python и прочее, инструкций - в нете валом), я ставил дебиан с преднастроенными локалями во время установки. На винду - какой-нибудь SFTP-клиент, например sftp drive(создает в винде виртуальный диск с нужной директорией в виртуалке, ему нужна таблетка) и scite(надо настроить сохранение и автораспознавание UTF-8, это бесплатно). Ели вам удастся настроить этот аэробус и взлететь, вы получаете все преимущества *nix не отказываясь от пользовательского привычного окружения windows. Кстати, такой метод помогает пересесть под linux очень мягко, не нарушая сна :)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version