2011-02-14 28 views
11

Ben İngilizce, İspanyolca ve Rusça dahil olmak üzere birden charactersets gelen dizeleri içeren bir .py dosyası yazıyorum .py.Kodlama Files

string_en = "The quick brown fox jumped over the lazy dog." 
string_es = "El veloz murciélago hindú comía feliz cardillo y kiwi." 
string_ru = "В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!" 

benim dosya çalıştırıldığında aşağıdaki gibi sözdizimi hatalarını oluşturmamak için dosyamı kodlamak nasıl sergiyi sorun yaşıyorum:

SyntaxError: Non-ASCII character '\xc3' in file example.py on line 128, but no encoding 
declared; see http://www.python.org/peps/pep-0263.html for details 

Ben Örneğin, şöyle bir şey var ve dosyamın başına # -*- coding: utf-8 -*- eklemeyi denedim, ancak şanssız. Ayrıca dizeleri unicode (yani string_en = u'The quick brown fox jumped over the lazy dog.") olarak tekrar işaretlemeyi denedim.

o tek bir dosyada farklı Python codec'leri karakterleri içerecek şekilde, yoksa izin verilmez şey yapmak çalışılıyor mümkün mü?

+2

"Birden kodlamaları" sadece bir batshit deli fikir vs. kendisi yerel ayarlarına elde edilebilir dosya sistemi kodlama, varsayılan olabilir. Unicode kullanmak istiyorsan, sorun olmaz. Sadece bir unicode dosyası olduğundan emin ol. Kodlama bildirimi eklediğinizde ve unicode dizeleri kullandığınızda hangi hatalar alırsınız? – delnan

+0

Bu özel hata _seems_, dosyanızın \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\. Sadece aynı hatayı denedim ve aldım. Komut dosyamın ikinci satırında ** # kodlama: utf-8' ** eklendiğinde. –

+0

Öneriler için teşekkürler. Dün yanlış yaptığım şeyden emin değilim, ama "# kodlama: utf-8" veya "# - * - kodlama dahil: utf-8 - * -" bugün benim için iyi çalışıyor. Bilginize, GNU Emacs 22.1 kullanıyorum. Varsayılan kodlama sistemim mule-utf-8'dir [arabellek komutunu 'C-h C kodlaması kullanılarak bulunur]. – Katrina

cevap

13

kullanımı durumda dizeleri uygun kodlama iki yönü vardır: Python UTF-8 kodlaması kullanan anlamak için

  1. , kendi kodunun ilk veya ikinci satırında içermelidir # coding=utf-8 gibi görünen bir çizgi. Detaylar için bakınız PEP 0263.

  2. Sizin editör da UTF-8 kullanmalıdır. Bu, onu yapılandırmayı gerektirir ve kullandığınız editöre bağlıdır. Emacs ve Vim yapılandırması aynı PEP ele alınmaktadır Eclipse

1

Sen yerine dosyanın başında # -*- coding: XXXX -*- eklemek zorunda XXXXsizin editör kaynak dosyasını kaydetmek için kullandığı kodlama ile; Kullandığınız

Hangi editörü? Verileri kaydetmek için hangi kodlamanın kullanıldığı editör ayarlarını kontrol edebilir misiniz?