Tout d'abord vous devez décoder à partir des octets codés que vous avez. Cela semble être ISO-8859-9 (latin-5), ou, si vous utilisez Windows, probablement code page 1254, qui est basé sur latin-5.
>>> 'kitap ara\xfet\xfdrmas\xfd'.decode('cp1254')
u'kitap ara\u015ft\u0131rmas\u0131' # u'kitap araştırması'
Si vous sont à l'aide de Windows, puis en fonction de l'endroit où vous obtenez ces octets, il pourrait être plus approprié de les décoder comme mbcs
, ce qui se traduit par « selon la page de code du système local utilise '. Si la chaîne est simplement placée dans un fichier .py
, il est préférable d'écrire u'kitap araştırması'
dans la source et de définir une déclaration -*- coding
pour diriger Python vers le décodeur. Voir PEP 263.
Quant à la façon de coder les chaînes unicode UTF-8 pour la base de données, eh bien, si vous voulez vous pouvez le faire manuellement:
>>> u'kitap ara\u015ft\u0131rmas\u0131'.encode('utf-8')
'kitap ara\xc5\x9ft\xc4\xb1rmas\xc4\xb1'
mais une couche bonne d'accès aux données est susceptible de le faire automatiquement pour vous, si vous avez le COLLATION
des tables, les données vont bien.
Est-ce que vous définissez hex_string dans votre source ou provient-il d'une source externe? – Sjoerd