Python 3.5 kullanıyorum ve özel Çince karakterler içerebilen veya içermeyen bir metni bayt metni almaya çalışıyorum ve bir dosyaya verdim. Çince karakterler içermeyen girişler için çalışır, ancak yaptıkları zaman kırılır. Çince karakterler her zaman bir kişinin adıdır ve her zaman isimlerinin İngilizce yazımına ek olarak vardır. Metin JSON biçimlendirilmiş ve yüklenemeden önce kodu çözülmesi gerekiyor. Kod çözme iyi gidiyor ve bana herhangi bir hata vermiyor. Ben denemek ve bana aşağıdaki hata iletisini veren bir dosyaya deşifre metni yazarken: Burada Çince karakterlerle Python çözme sorunu
ben buna bir şey yapmadan önce alıyorum ham verilerin bir örnektir:UnicodeEncodeError: 'charmap' codec can't encode characters in position 14-18: character maps to undefined
b' "isBulkRecipient": "false",\r\n "name": "Name in, English \xef'
b'\xab\x62\xb6\xe2\x15\x8a\x8b\x8a\xee\xab\x89\xcf\xbc\x8a",\r\n
recipientData = json.loads(recipientContent.decode('utf-8', 'ignore'))
recipientName = recipientData['signers'][0]['name']
pprint(recipientName)
with open('envelope recipient list.csv', 'a', newline='') as fp:
a = csv.writer(fp, delimiter=',')
csvData = [[recipientName]]
a.writerows(csvData)
recipientContent
bir API çağrısı elde edilir:
İşte kullanıyorum kodudur. Çıkış dosyasında Çince karakterlere sahip olmam gerekmiyor. Herhangi bir tavsiye büyük takdir edilecektir!
Güncelleme:
Ben sonları her giriş için bazı manuel geçici çözümler yapıyor ve Çin özel karakterler içermiyordu diğer girdileri geldi, ancak diğer dillerden onları vardı ve aynı programı kırdı oldum iyi. Özel karakterler sadece isim alanındadır. Yani bir isim normal ve özel karakterlerin bir karışımı olduğu "Ałex" gibi bir şey olabilir. Bu bilgiyi içeren dizeyi çözmeden önce ekrana yazdırabilirim ve şu şekilde görünebilir: b'name": "A\xc5ex",\r\n
Ancak utf-8'e çözdükten sonra çıktı almaya çalışırsam bana bir hata verecektir. o. Hata mesajı: UnicodeEncodeError: 'charmap' codec can't encode character 'u0142' in position 2- character maps to -undefined-
Neye dikkat ettim ve ł özel karakteri.
örnek dize (ne de UTF-8 olarak görünmüyor ortak Çinli multibyte herhangi kodlamaları). UTF-8'in kodlanmış olduğundan (hatta Çince) emin misiniz? – univerio
, 'İçerik Türü'nü kontrol etmelisiniz. Eğer uygulama/json ise; charset = utf-16', 'utf-16' kullanın. "Uygulama/json" için varsayılan değer "utf-8" –
% 100 emin değilim çünkü utf-8 web servisinin verileri aldığından çok iyi belgelenmediğinden emin değilim, ancak birkaç tane denedim utf-16 dahil olmak üzere farklı kodlama türleri. Çince karakterler içerdiğinden eminim. –