Maison >développement back-end >Tutoriel Python >Explication détaillée de l'utilisation de la fonction setdefaultencoding

Explication détaillée de l'utilisation de la fonction setdefaultencoding

巴扎黑
巴扎黑original
2017-08-21 14:55:532244parcourir

sys.getdefaultencoding() définit le format d'encodage de chaîne par défaut. Si vous ne spécifiez pas la méthode d'encodage lors de l'encodage et du décodage en python, alors python utilisera l'encodage par défaut.

L'encodage par défaut de python2.x est ascii, c'est pourquoi la plupart des erreurs d'encodage python : "UnicodeDecodeError : le codec 'ascii' ne peut pas décoder l'octet...".

#coding:utf-8, qui a une fonction similaire, est utilisé pour définir l'encodage du code source. S'il n'est pas défini, le code source ne peut pas contenir de chaînes chinoises

. Remarque : Setdefaultencoding a été abandonné depuis python2.7, il ne peut donc pas être utilisé dans python3

Vous devez d'abord recharger le module sys lors de l'appel de setdefaultencoding, car l'instruction import ici n'est pas réellement la première instruction import de sys. , ce qui signifie que cela peut en fait être la deuxième ou la troisième fois que le module sys est utilisé, voici juste une référence à sys, qui ne peut être rechargé qu'en reload.

#!/usr/bin/env python    
#encoding: utf-8  
import sys   #引用sys模块进来,并不是进行sys的第一次加载  
reload(sys)  #重新加载sys  
sys.setdefaultencoding('utf8')  ##调用setdefaultencoding函数
Alors pourquoi faut-il la recharger, mais la fonction ne peut pas être appelée si elle est directement référencée ? Étant donné que la fonction setdefaultencoding est supprimée après avoir été appelée par le système, elle n'est plus là lorsqu'elle est référencée via l'importation. Par conséquent, le module sys doit être rechargé une fois pour que setdefaultencoding soit disponible et que le codage de caractères actuel de l'interpréteur puisse être. modifié dans le code.

Dans le dossier Lib du répertoire d'installation de python, il y a un fichier appelé site.py, dans lequel vous pouvez trouver main() --> setencoding()-->sys.setdefaultencoding(encoding) , Parce que ce site.py sera automatiquement chargé à chaque démarrage de l'interpréteur python, la fonction principale sera exécutée à chaque fois et la fonction setdefaultencoding sera supprimée dès sa sortie.
#!/usr/bin/env python    
#encoding: utf-8  
import sys     
sys.setdefaultencoding('utf8')

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn