1

そのような文字がいくつか含まれているテキストファイルを読み取り'\260'(意味します'°')、DB(sqlite3)に追加します。

その後、DB から情報を取得しようとしますが、この情報は XML ファイルから取得するため、sql-query がビルドされます'\xb0'(これも意味があります)。'°'

16 進文字を 8 進文字に置き換えようとしています: text =text.replace(r'\xb0', '\260')しかし、うまくいきません。なぜですか? 正しい sql-query を作成できません。

この問題には、エンコード、デコードなどの解決策があるかもしれません。

4

1 に答える 1

3

\260 同じです\xb0:

>>> '\xb0'
'\xb0'
>>> '\260'
'\xb0'

おそらく、入力を unicodeにデコードし、代わりにそれを挿入したいと思うでしょう。データが Latin 1 にエンコードされている場合は、次をデコードします。

>>> print '\xb0'.decode('latin1')
°

sqlite3ユニコードを問題なく処理でき、デコードすることで、コーデックごとに異なる可能性があるバイト値ではなく、テキスト値を処理していることを確認できます。

于 2013-11-09T17:19:40.787 に答える