ne peut pas convertir des octets de l'objet à la str implicitement
Je suis en train d'essayer d'ouvrir un fichier gif, et d'envoyer ses octets correctement un webbrowser, mais il lève l'exception "ne peut pas convertir des octets de l'objet à la str implicitement" et franchement, je suis perplexe, parce que j'ai déjà converti en une chaîne.
files=open("WebContent/"+fileName,"rb")
#size=os.path.getsize("WebContent/"+fileName)
text=str(files.read())
text=text.encode('UTF-8')
defaultResponseCode="HTTP/1.1 200 OK\r\nContent-Type: image/gif\r\nContent-Transfer-Encoding: binary\r\nContent-Length: 29696\r\n\r\n"+text
Merci d'avance!
text=text.encode('UTF-8')
Maintenant ce n'est plus une chaîne de...Ohhhh j'ai donc faut juste faire " du texte.encode('UTF-8')'?
Pourquoi convertir à la chaîne? Vous n'en avez pas besoin. Votre
Content-Transfer-Encoding
en-tête prétend être "binaire", d'où l'encodage n'a été appliquée sur les données. Envoyer l'image comme vous le lire à partir du fichier.
OriginalL'auteur user1564622 | 2014-01-12
Vous devez vous connecter pour publier un commentaire.
Ici que vous essayez de convertir des octets (fichier ouvert avec
'rb'
mode) à la chaîne:changement de ligne ci-dessus à ceci:
alors vous pouvez convertir une chaîne unicode en utf-8 octets chaîne de caractères avec:
Et si la source de l'encodage est utf-8, vous pouvez simplement passer chaîne d'octets à partir de
files.read()
à votre chaîne de résultat sans insensée décoder/encoder les étapes (à partir d'octets utf-8 à la chaîne et à nouveau d'octets utf-8)...mise à jour: essayer avec les demandes
mise à jour 2:
Selon le type de contenu d'en-tête de réponse (
... Content-Type: image/gif ...
) vous avez des données nécessaires format juste aprèsfiles.read()
sans aucun codage/décodage des!essayez-le maintenant, vous êtes à l'aide de python3?
maintenant sa me disant que j'ai un octet non valide
Je suis confus -- vous devriez lire cela comme une chaîne et l'utiliser comme une chaîne de caractères ou de lire des octets et de les utiliser comme des octets. Pourquoi les deux?
source fichier en utf-8?, essayez de changer l'encodage ou de décodage avec des erreurs='ignorer': texte = fichiers.read().décoder(encoding='utf-8', 'ignore')
OriginalL'auteur ndpu
Pour ceux principalement intéressés par Popen plutôt que psql, voici un débogué de travail python3 script, basé sur l'original Popen question, et en incorporant des suggestions.
OriginalL'auteur philwalk
En python 3+ je recevais ce genre de problème, et j'ai enlevé
text.encode("utf-8")
et utilisétext.strip()
.OriginalL'auteur NITISH KAUNDAL