0

Pythonでsqliteを使用しようとしています:

from pysqlite2 import dbapi2 as sqlite
con = sqlite.connect('/home/argon/super.db')
cur = con.cursor()
cur.execute('select * from notes')
for i in cur.fetchall():
    print i[2]

そして、私は時々このようなものを受け取ります(私はロシア出身です):

Ответ etc...

そして、この文字列をこの関数に渡すと(他のプロジェクトで役立ちました):

def unescape(text):
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            # character reference
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except ValueError:
                pass
        else:
            # named entity
            try:
                text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
            except KeyError:
                pass
        return text # leave as is
    return re.sub("&#?\w+;", fixup, text)

さらに奇妙な結果が得られます。

ÐÑвеÑиÑÑ Ñ ÑиÑиÑованием etc

通常のキリル文字を取得するにはどうすればよいですか?

4

1 に答える 1

1

О\xD0\x9E、またはの UTF-8 バイト ペアのように見えます\u1054。キリル文字О(大文字の O) としてよく知られています。

つまり、あなたの手元には奇妙にエンコードされた UTF-8 データがあります。数字{をバイトに変換して(chr(208)そうするでしょう)、UTF-8からデコードします:

>>> (chr(208) + chr(158)).decode('utf-8')
u'\u1054'
>>> print (chr(208) + chr(158)).decode('utf-8')
О
>>> print (chr(208) + chr(158) + chr(209) + chr(130) + chr(208) + chr(178)).decode('utf-8')
Отв
于 2012-10-13T20:58:10.530 に答える