Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 3, 2010 11:37:41

Niko
От:
Зарегистрирован: 2010-11-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировки

Перевернул все описаные посты, ниче не помогло
использую Python 2.3.4 и WingIDE

ru = lambda x: unicode(x,'cp866')
print ru('привет') #это работает
print ('привет'.decode('cp1251')) #это работает
print u(mystr) #не работает
NameError: global name 'u' is not defined
если прописываю одну из указанных типов кодировок, реакция тоже непонятная работает только под 1251
# -*- coding: cp1251 -*-
ru = lambda x: unicode(x,'cp866')
u = lambda y: unicode(y,'cp866')
print ru('привет') #это НЕ работает
яЁштхЄ
print ('привет'.decode('cp1251')) #это работает
print u('привет') #это работает
# -*- coding: utf-8 -*- 
ru = lambda x: unicode(x,'cp866')
u = lambda y: unicode(y,'cp1251')
print ru('привет') #это НЕ работает
╨┐╤А╨╕╨▓╨╡╤В
print ('привет'.decode('cp1251')) #это не работает
print u('привет') #это не работает
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0402' in position 3: character maps to <undefined>
идем далее…
вот пишу скрипт
import csv
import os, sys
import unicodedata
#import codecs

ru = lambda x: unicode(x,'cp866')
u = lambda y: unicode(y,'cp1251')
print ('привет 111'.decode('cp1251')) #test
print u('привет') #test

ss = ''
def menu_step():
while 1:
try:
x = int(raw_input('Enter action: \n'+ \
'1.Add\n' + \
'2.Modify\n' + \
'0.Exit\n' + \
'-->'))
if x == 1:
file_step()
break
elif x == 2:
pass
elif x == 0:
break
except ValueError:
print ('Повторите ввод Еще раз...'.decode("cp1251"))

print ('Программа завершена'.decode("cp1251"))
sys.exit(1)

def file_step():
if True:
#len(sys.argv[1]):
cwd = os.getcwd()
cwd = cwd + '\\data\\'
#os.path.join(cwd , '\\data\\')
print (cwd)
for file_name in os.listdir(cwd):
print (cwd+file_name)
f = open(cwd+file_name)
reader = csv.reader(f,delimiter=";")
#reader = csv.reader(open(cwd+file_name))
for row in reader:
mystr = str(row)
#mystr[:1].decode('cp1251')
#mystr.decode()
print (mystr)
# nlen = len(str(n))
# for i in range(1, n + 1):
# if i % nlen == 0:
# print(i)
# s.append(tuple(unicode(field, 'UTF-8') for field in row))
#[1:1].encode('UTF-8'))
else:
print (sys.argv[1])
file_name = sys.argv[1]
f = open(file_name)
try:
reader = csv.reader(f, delimiter=';')
for row in reader:
print (row)
except IOError:
print ('can''t open', arg)
else:
f.seek(0)
print (f, 'содержит'.decode("cp1251"), len(f.readlines()), 'string')
f.close()
print ('запарили эти кодировки!'.decode("cp1251"))

menu_step()
при при выводе строк из файла
d:\work\data\test4.csv
['\xb9', '\xd4\xc8\xce', '\xcf\xf0\xee\xe5\xea\xf2', '\xc4\xee\xeb\xe6\xed\xee\xf1\xf2\xfc', '\xce\xef\xfb\xf2 \xef\xee \xee\xf1\xed.\xf1\xef\xe5\xf6\xe8\xe0\xeb\xe8\xe7\xe0\xf6\xe8\xe8, \xe3\xee\xe4\xfb', '\xc4\xe0\xf2\xe0 \xed\xe0\xf7\xe0\xeb\xe0 \xf0\xe0\xe1\xee\xf2\xfb', '\xce\xef\xeb\xe0\xf2\xe0']
['1', '\xd2\xe0\xeb\xe0\xed\xe8\xed \xca\xee\xed\xf1\xf2\xe0\xed\xf2\xe8\xed', '', 'Team Lead .Net.', '', '14.10.2008', '']
Тоже самое происходит когда перевожу скрипт на линукс, теже кракозяблы



Офлайн

#2 Ноя. 3, 2010 21:36:25

Jenyay
От:
Зарегистрирован: 2007-08-10
Сообщения: 173
Репутация: +  1  -
Профиль   Отправить e-mail  

Кодировки

А сам текст скрипта в какой кодировке написан?



Офлайн

#3 Ноя. 4, 2010 00:42:38

Niko
От:
Зарегистрирован: 2010-11-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировки

Виндошная как я понимаю, локаль выдает cp1251



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version