我正在使用URL查询lynx浏览器并从终端获取输出,但问题是来自秘鲁网站的输出并且终端上没有正确显示西班牙语字符。我正在传递-assume_charset和-assume_unrec_charset标志以及我对url的调用,因此如果网站没有指定字符集,它应该用我指定的字符集替换字符集。对于这两个参数,我尝试过拉丁语1,拉丁语3和拉丁语4,但它们似乎都没有用。我想知道如何解决这个问题。我正在使用python子进程模块并将lynx查询作为参数传递给subprocess.Popen(...),然后从STDOUT读取输出。我的代码如下:
import subprocess
def get_urlData(url):
cmd = "lynx -dump -nolist -notitle -assume_charset =\"ISO-8859-1\" -assume_unrec_charset=\"ISO-8859-1\" "+url
lynx = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
file_data = lynx.stdout.read()
#file_data = file_data.decode('ISO-8859-1','replace')
return file_data
当我将返回的file_data存储在一个对象中并尝试在python终端上打印时,以下是我得到的输出的一部分,其中包括澄清问题:
Per \ xedodo:Periodo de Gobierno 2006- 2011。
Legislatura:Primera \ n Legislatura Ordinaria 2010 \ n N \ xfamero:04903/2010-CR Fecha Presentaci \ u0137n:07/13/2011 \ n
Proponente:Congreso \ n
Grupo Parlamentario:Multipartidario \ n
T \ xedtulo:LEY QUE EXTINGUE LA DEUDA TRIBUTARIA PROVENIENTE DE LA \ n IMPORTACI \ u0136N Y / O VENTA DE COMBUSTIBLE TURBO A1 \ n
显然,角色\ u0137需要是其他西班牙语角色,但我不知道如何让它在我的终端上显示。任何帮助将不胜感激。
答案 0 :(得分:0)
\ u0136和\ u0137是UTF字符,cmd中的字符集是ISO-8859-1 ...您必须具有相同的字符包含。