2017-09-12 5 views
0

J'ai un texte qui a été traduit de l'anglais vers le chinois simplifié. Cependant, quand j'ai reçu le fichier, les caractères étaient brouillés. Ainsi, par exemple, nous avons une ligne qui se lit "plutôt que de contenir les caractères chinois que je m'attendrais".Comment puis-je savoir quel encodage a été utilisé pour produire du texte chinois tronqué?

J'ai essayé de coller la chaîne ci-dessus dans un interpréteur Python, en la convertissant en Unicode, et en décodant avec divers jeux de caractères chinois, en vain. Est-ce que quelqu'un a un aperçu à ce sujet? Je vous remercie.

+0

Savez-vous ce que le codage Unicode a été utilisé dans le codage d'origine? –

+1

@a_river_in_canada non, c'est ce que demande le sujet de la question. – JacobIRR

Répondre

5

Chardet:

>>> s = "ΪÁËÓÐЧ¡¢¸ßЧµØʵÏÖÄ¿±ê£¬Äú×îÐèÒªµÄÊÇʲô£¿" 
>>> chardet.detect(s.encode('l1')) 
{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'} 
>>> s.encode('l1').decode('gb2312') 
'为了有效、高效地实现目标,您最需要的是什么?' 
+0

Merci, Josh! Cela fonctionne, mais je suis encore un peu confus au sujet de l'encodage dans ce contexte. Pourquoi 's.encode ('l1'). Decode ('gb2312')' fonctionne, alors que 's.encode ('utf8'). Decode ('gb2312') 'ne le fait pas? –

+0

Le texte que vous avez donné est une chaîne de caractères, qui est une interprétation d'une chaîne d'octets. Afin de déterminer ce que ces octets signifiaient vraiment, j'ai dû réorganiser la chaîne d'octets de votre question. Il a été déterminé que vous avez utilisé Latin-1 pour décoder la chaîne d'octets en posant votre question, pas UTF-8. –

+0

Je vois, et comment saviez-vous que Latin-1 a été utilisé pour décoder les octets à l'origine? –