import locale
prefered_encoding = locale.getpreferredencoding()
prefered_encoding 'ANSI_X3.4-1968'
apache WSGI kullanarak UnicodeDecodeError ascii. Benim localhost üzerindepython3 varsayılan kodlama ben <a href="http://inginious.readthedocs.io" rel="noreferrer">inginious</a> denilen bir çerçeve kullanıyorum ve onun şablonu oluşturmak için <a href="http://webpy.org/" rel="noreferrer">web.py</a> kullanıyor
web.template.render(os.path.join(root_path, dir_path),
globals=self._template_globals,
base=layout_path)
render çalışır ama benim basamak sunucusunda üzerinde değil.
Her ikisi de python3'ü çalıştırır. Burada
def __str__(self):
self._prepare_body()
if PY2:
return self["__body__"].encode('utf-8')
else:
return self["__body__"]
hebew karakter dahil edebilirim yığın izleme t = self._template(name),
File "/lib/python3.5/site-packages/web/template.py", line 1028, in _template,
self._cache[name] = self._load_template(name),
File "/lib/python3.5/site-packages/web/template.py", line 1016, in _load_template
return Template(open(path).read(), filename=path, **self._keywords)
File "/lib64/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 83: ordinal not in range(128),
Benim html utf-8
Python2 kodlama sadece (benim elimde değil)
üzerine web.py zorlar görüyoruzve bunu şöyle açabilirim:
ve kodlamanın başarısız olduğu satır, İbranice karakterlerinin olduğu yerdir.
export PYTHONIOENCODING=utf8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
ustaca çerçeve python3.5 site paketleri altında pip
olarak yüklenir kullanıcı centos
altında:
ben~/.bashrc
içinde bazı ortam değişkenleri çalıştı. ve kullanıcıya altında bir apache sunucusu tarafından sunulan apache
apache WSGI
import os
os.environ['LC_ALL'] = 'en_US.UTF-8'
os.environ['LANG'] = 'en_US.UTF-8'
os.environ['LANGUAGE'] = 'en_US.UTF-8'
Ben bunların farkında olacak şekilde (app init sırasında) kodunda Ortam değişkenlerini ayarlama çalıştı setenv yöntemiyle /etc/httpd/conf/httpd.conf
düzenlendi:
SetEnv LC_ALL en_US.UTF-8
SetEnv LANG en_US.UTF-8
SetEnv LANGUAGE en_US.UTF-8
SetEnv PYTHONIOENCODING utf8
hala sudo service httpd restart
ve şans kullanılarak yeniden başlatılmıştır.
Sorum şu: Bu sorunu çözmek için en iyi uygulama nedir? Bunun için hackler olduğunu anlıyorum, ancak alt çizginin nedenini ve nasıl çözüleceğini anlamak istiyorum.
Teşekkürler!
import codecs
with codecs.open(file_path,'r',encoding='utf8') as f:
text = f.read()
için
open('/path/to/feedback.html').read()
değiştirildi dosyayı okurken
'ANSI_X3.4-1968' ==' ASCII'. –
Bize tam olarak geri dönüşün ne olduğunu ve nasıl yeniden üretileceğini göstermeniz gerekir. –
Ben stacktrace ve bazı daha fazla kod ekledim, ama çoğaltmak için, geçerli bir öneri olmayan ustaca çerçeve yüklemek zorundasınız, bu yüzden en iyi seçeneğim iyi soru – WebQube