CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python : problème d'encodage UTF-8

Glosoli
Glosoli
Niveau 10
12 juin 2014 à 07:39:37

Hello !

J'ai un souci d'encodage lorsque je souhaite écrire dans ma DB avec MySQLdb :d) http://pastebin.com/xkV977f3

Je recupère des messages et je souhaite les envoyer à ma DB. Certains messages fonctionnent encodés mais sur d'autres (sûrement à cause de certains caractères) ça m'affiche l'erreur "Unexpected error: <type 'exceptions.UnicodeEncodeError'>"
J'ai déjà tout checké, encode, decode, unicode, rien ne marche.

J'ai # -- coding: utf-8 - au début de mon code. Je fais des requête html et je ne les touche pas avant cette partie du code. Je les parse avec BeautifulSoup

Pitié ça fait plus d'une heure :peur:

Glosoli
Glosoli
Niveau 10
12 juin 2014 à 07:55:00

Et ça vient pas de la DB. J'ai encodé en utf-8_unicode et utf8_bin ça marche pas pour les deux :snif:

Glosoli
Glosoli
Niveau 10
12 juin 2014 à 08:07:18

Et ben merde après près de 2h :d) http://stackoverflow.com/questions/14630288/unicodeencodeerror-charmap-codec-cant-encode-character-maps-to-undefined

C'est très laid, pas très logique, mais ça marche

J'ai limite crawlé TOUT stackoverflow pour trouver ça, ainsi que Google, ce type est un génie !
Si quelqu'un a une autre solution je suis preneur

Glosoli
Glosoli
Niveau 10
12 juin 2014 à 08:16:28

Ah ben nan, ça m'affiche "Nous avons très vite à l??il " au lieu de "Nous avons très vite à l’œil" par exemple

Et le type dit dans son post que les "-" sont changés en "?" aussi :-(
:snif:

Triple14
Triple14
Niveau 10
12 juin 2014 à 15:26:54

J'ai eu un problème similaire (mais rien à voir avec les db).

Dans mon cas, je récupérais des strings à partir de fichier. J'avais des problèmes d'encodages, et j'ai aussi essayé plein de choses sans succès. Finalement j'ai utilisé le module codecs (import codecs), puis j'ouvrais mes fichiers (pour lecture) avec :

f = codecs.open(filename, encoding='utf-8')

Ca marche avec python 3.x

Glosoli
Glosoli
Niveau 10
13 juin 2014 à 01:03:22

Triple14 :d) C'est terrible
Mon code est portable sous windows sous Python 2.7 :snif:
J'vais voir ce qu'est encoding, mais comme j'ai non plus rien à voir avec l'écriture de fichier ça va pas être bon.
j'ai envie de pleurer :snif:

Triple14
Triple14
Niveau 10
13 juin 2014 à 13:17:07

Ah ok donc t'es sûr que ton problème vient pas du fait que les messages que tu récupères ("Je recupère des messages") ne proviennent pas de fichiers encodés différement de ce que tu imagines ?

Après je sais pas l'ampleur de ton code, mais s'il est pas trop grand le rendre python3-compatible prend pas énormément de temps (parenthèses au print, pas de tuples dépacketés en argument de fonctions, ...)

drougouIe
drougouIe
Niveau 8
11 juillet 2014 à 14:44:02

J'ai fais pas mal d'application Python, et je t'apprends peut être rien, mais quand on lit une chaîne de caractère, il FAUT préciser l'encodage que tu lis.

Sur Python 2, toute chaîne de caractère donc l'encodage n'est pas défini est une "string".
Tu dois donc la décoder en la lisant pour le convertir en unicode.
Même chose pour écrire quelque chose dans la base, tu dois encoder l'information dans l'encodage de la base (en partant d'un unicode).

Explication :

https://image.noelshack.com/fichiers/2014/28/1405082528-capture.jpg

Sous python 3, les string sont nativement en unicode (donc pas besoin de faire un u"chaine".

Bref, es tu sur du type d'encodage de ton fichier d'origine? Je sais que moi j'ai bloqué pas mal de temps jusqu'à m’apercevoir que sous Windows, l'encodage de la console était un truc genre cp85.

[Kyomaro]
[Kyomaro]
Niveau 10
11 juillet 2014 à 21:47:02

Personnellement j'ai un soucis, au début de mes codes (sous console) je précise l'encodage :

  1. -*- coding:latin-1 -* (je suis sous windows) mais ça me fait des caractères illisibles à la place des accents, de même pour utf-8 :(
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment