Maison > Article > développement back-end > Introduction détaillée à la méthode d'utilisation de la fonction setdefaultencoding
sys.getdefaultencoding() définit le format d'encodage par défaut de string Si vous ne spécifiez pas la méthode d'encodage lors de l'encodage et du décodage dans 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 la chaîne chinoise. .
Remarque : setdefaultencoding est obsolète après python2.7, il ne peut donc pas être utilisé dans python3.x
Exemple de code :
#!/usr/bin/env python #encoding: utf-8 import sys #引用sys模块进来,并不是进行sys的第一次加载 reload(sys) #重新加载sys sys.setdefaultencoding('utf8') ##调用setdefaultencoding函数
peut être exécuté correctement, mais le code suivant fonctionnera mal
#!/usr/bin/env python #encoding: utf-8 import sys sys.setdefaultencoding('utf8')
Vous devez d'abord recharger le module sys lors de l'appel de setdefaultencoding, car l'instruction d'importation ici n'est pas réellement sys La première instruction d'importation, c'est-à-dire qu'elle peut en fait être la deuxième ou la troisième importation du module sys. Il s'agit simplement d'une référence à sys et ne peut être rechargée que par reload.
Alors pourquoi faut-il la recharger, mais la fonction ne peut pas être appelée si elle est directement cité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), car ce site.py sera chargé automatiquement à chaque fois que vous démarrez l'interpréteur python, donc la fonction principale sera être chargé à chaque fois Après exécution, la fonction setdefaultencoding a été supprimée dès sa sortie.
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!