2016-04-03 31 views
0

Debian üzerinde yazılmış (ve tamamen çalışıyor) bir python betiğiyim. Şimdi cx_Freeze ile komut dosyasını, kullanıcılara dağıtmak için dondurmak istiyorum ve bu amaçla sanal bir kutuda çalışan python 3.4.4 ile bir win xp sistemim var. Ancak, senaryoyu ve elde exe çalıştırmak için bir girişim donma sonra, bu alın:Python 3.4.4/win xp: kodlama hatası

"UnicodeEncodeError: pozisyonunda 11-14 karakterleri kodlamak olamaz 'charmap' codec'i: karakteri (<) tanımlanmamış eşleştiren (>)". sayısında

karakterler ise şunlar:

ту╧╙

karakter python komut dosyası oluşturan bir FDF dosyası sözdizimi bir parçasıdır. Aynı zamanda donmadan önceki orijinal python betiğinin bile aynı konuya sahip olduğu ortaya çıktı; Sistemin komut satırı yorumlayıcısı cp1250 ile çalışırken python'un stdout'unun cp852 olduğunu anlıyorum. Ben PYTHONIOENCODING değiştirmek için çeşitli yollar denedim ama şimdiye kadar boşuna, sadece daha fazla hata mesajlarına yol açar. Bunu düzeltmek için yapabileceğim bir şey var mı?

cevap

0

Oluşturduğunuz dosyanın kodlamasını ayarlıyor musunuz? Aksi takdirde, sistem kodlaması varsayılan olacaktır ve sorununuzu açıklayabilir.

stream = open('filename', 'w', encoding='utf8') 

Ya da belki aslında ikili modda çıktı dosyasını açmalı: Yani (aslında gerekenler tarafından yerine utf8) böyle çıktı dosyayı açabilir. Kiril alfabesiyle kutu çizimi arasında değişen bir dizi unicode karakterinin aslında bir şeyin sözdizimi olması garip görünüyor - muhtemelen ihtiyaç duyduğunuz şey, belirli bir 8 bitlik kodlamada bu karakterlerin bayt değeridir.

+0

İpucu için teşekkürler, sorunu çözer. İlginçtir, bu bir FDF dosyası başlangıcı göründüğünü gibi:% FDF-1.2 % ту╧╙ 1 0 obj << /FDF << /Alanlar [ << /V (Pstcd) /T (Posta Kodu) – bob