Форум сайта python.su
привет всем
есть 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)
Офлайн
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)
Офлайн
Нет такой кодировки, как юникод, есть например utf-8.
s=fo.read().decode('utf-8')
print ord(s[0])
Офлайн
извиняюсь за не недостоверную информацию.
текст в utf-8
str исправил
igor.kaist очень помог ваш пример.
теперь возник вопрос
как сохранить в БД(MySql) иероглиф зная его код. чтобы иероглиф отображался(шрифты у меня установлены)
просто когда я записываю сохраняется код.
не пинайте за то что много вопросов задаю)
Отредактировано (Июнь 11, 2010 13:38:56)
Офлайн
legionerЕсли именно по кодам, то есть функуния unichr, которая выдает символ в юникоде, по “коду”. А уже готовую юникодную строку, пишите в базу в utf-8 ( out.encode('utf-8') )
как сохранить в БД(MySql) иероглиф зная его код
Офлайн
спс. но возникли трудности.
вывожу спомощю 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)
Офлайн
вот поэкспериментировал, теперь выводит правильно
но логику я не понял :), может кто объяснит
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)
Офлайн