Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 11, 2010 12:17:22

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

txt unicode python 2.6

привет всем
есть txt файл в unicode кодировке.
внутри файла китайские иероглифы. нужно получить коды иероглифов.

#!/usr/bin/env python

import sys

def main():
fo = open("daodetsin.txt", "rb")
str = fo.read(1000)
print(str)
fo.close()

if __name__ == '__main__':
main()
выводит не понятно что. заранее спасибо)



Отредактировано (Июнь 11, 2010 12:19:15)

Офлайн

#2 Июнь 11, 2010 12:56:45

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

txt unicode python 2.6

1. Какие коды то? в какой кодировке?
2. Зря используете зарезервированное имя str в качестве переменной. Может это тоже причина проблемы.
3. .encode для вашей строки использовали? или .decode для юникода, если в файле действительно он(т е utf8|utf16).
4. Или вот это надо?

In [4]: d = u'Тест'

In [5]: d.__repr__()
Out[5]: "u'\\xd0\\xa2\\xd0\\xb5\\xd1\\x81\\xd1\\x82'"



Отредактировано (Июнь 11, 2010 12:59:56)

Офлайн

#3 Июнь 11, 2010 12:58:55

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

txt unicode python 2.6

Нет такой кодировки, как юникод, есть например utf-8.

s=fo.read().decode('utf-8')
print ord(s[0])
P.S. Не хорошо называть свои переменные именами встроенных функций (str)



Офлайн

#4 Июнь 11, 2010 13:34:20

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

txt unicode python 2.6

извиняюсь за не недостоверную информацию.
текст в utf-8
str исправил

igor.kaist очень помог ваш пример.

теперь возник вопрос
как сохранить в БД(MySql) иероглиф зная его код. чтобы иероглиф отображался(шрифты у меня установлены)
просто когда я записываю сохраняется код.

не пинайте за то что много вопросов задаю)



Отредактировано (Июнь 11, 2010 13:38:56)

Офлайн

#5 Июнь 11, 2010 16:52:56

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

txt unicode python 2.6

legioner
как сохранить в БД(MySql) иероглиф зная его код
Если именно по кодам, то есть функуния unichr, которая выдает символ в юникоде, по “коду”. А уже готовую юникодную строку, пишите в базу в utf-8 ( out.encode('utf-8') )



Офлайн

#6 Июнь 11, 2010 18:29:18

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

txt unicode python 2.6

спс. но возникли трудности.
вывожу спомощю PyQt
сначала вывожу символ все правильно label1
потом получаю код и преабразовываю в символ и вывожу label2 но результат не одинаков с label1

label1 = Qt.QLabel("常".decode('utf-8'),frame)
temp = ord("常".decode('utf-8'))
out = unichr(temp)
label2 = Qt.QLabel(out.encode('utf-8'), frame)



Отредактировано (Июнь 11, 2010 18:30:01)

Офлайн

#7 Июнь 11, 2010 18:43:12

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

txt unicode python 2.6

вот поэкспериментировал, теперь выводит правильно
но логику я не понял :), может кто объяснит

temp = ord("常".decode('utf-8'))
out = unichr(d)
temp2 = out.encode('utf-8')

label = Qt.QLabel("常".decode('utf-8'),frame)

label2 = Qt.QLabel(temp2.decode('utf-8'), frame)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version