繁体   English   中英

Django的subprocess.check_output Python中的Unicode变量问题

[英]Problems with unicode variables in subprocess.check_output Python with Django

最近在我的工作中,我们带来了一台服务器并对其进行了配置。 它只是为了上下文。 现在的问题是我正在使用Java代码(Cogroo,葡萄牙语中的语法检查器)工作,而我们在Python中有一些代码,为了使这两个代码一起工作,我在Python代码中调用了jar文件。 当我在本地计算机上工作时,一切正常,当我将服务器放入服务器时,会遇到一些麻烦。

>>> a = u"ele anda à cavalo"
>>> print(type(a))
>>> <type 'unicode'>
>>> a
u'ele anda \xe0 cavalo'
>>> print(a)
ele anda à cavalo

在我的本地计算机和服务器终端上,它工作正常,但是如果我在Python脚本上执行相同操作,则会给我带来类似“ ascii'编解码器无法编码字符u'\\ xe0'print python”的错误。 在脚本中,我什至无法打印unicode字符串。 比当我尝试调用output = subprocess.check_output(cd.encode("utf-8"), shell=True) var cd具有Java代码和路径cd = 'java -jar path/file.jar GrammarChecker -country br -lang pt -text "' + auxTextPure + '"' var auxTextPure始终是unicode字符串。

看那是两个问题,第一个是当var auxTextPure是不带像A menino这样的特殊字符的istring时,它返回的输出是Os determinantes concordam em n?mero(单数或复数)和em g?nero(masculino ou feminino)可替代的实体。 我需要带重音的输出,第二个错误是当使用带重音的字符串(如Ele andaàcavalo)时,它会使此输出Verifique重复一次。 但是正确的输出是O sinal indicativo de crase indica que temos“ a” +“ a” expressos em umsó“à”。 Somente ocorre crase quandoháencontro depreposição“ a” com artigo ou pronome demonstrativo“ a” /“ as”。 波尔图托,nãoocorre折痕antes de palavras masculinas。 带着重点,我知道问题是因为服务器上的Python或django以及脚本上特定的不能翻译unicode(UTF-8)并不能在屏幕上甚至在变量上打印。 我尝试制作cd.encode("utf-8") auxTextPure.encode("utf-8") auxTextPure.decode("utf-8")和其他一些类似import codecs代码,并使用此编解码器,我尝试查找在互联网上出现此问题,但在任何地方我都能找到解决方法,任何人都可以帮助我吗? 非常感谢,抱歉我的英语不好。 Leandro CostaValadão。

字符串应首先解码为UTF-8,然后再编码,反之亦然。 您永远不知道该字符串是原始编码还是解码。

1。

a = u"ele anda à cavalo"
print a.encode('UTF-8')

ele anda à cavalo

2。

a = u"ele anda à cavalo"
print a.decode('UTF-8')

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 9: ordinal not in range(128)

3。

a = u"ele anda à cavalo"
print a.encode('UTF-8').decode('UTF-8')

ele anda à cavalo

4。

a = u"ele anda à cavalo"
print a.encode('UTF-8').decode('UTF-8').encode('UTF-8')

ele anda à cavalo

好笑,不是吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM