0

我正在使用 URL 查询 lynx 浏览器并从终端获取输出,但问题是输出来自秘鲁网站,并且西班牙语字符未在终端上正确显示。我将 -assume_charset 和 -assume_unrec_charset 标志与我对 url 的调用一起传递,因此如果网站未指定字符集,它应该将字符集替换为我指定的字符集。对于这两个参数,我尝试了拉丁语 1、拉丁语 3 和拉丁语 4,但它们似乎都不起作用。我想知道如何解决这个问题。我正在使用 python subprocess 模块并将 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. 立法会: Primera\n Legislatura Ordinaria 2010\n N\xfamero: 04903/2010-CR Fecha Presentaci\u0137n: 07/13/2011\n
支持者: 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 需要是其他一些西班牙字符,但我不知道如何让它显示在我的终端上。任何帮助,将不胜感激。

4

1 回答 1

0

\u0136 和 \u0137 是 UTF 字符,你在 cmd 中的字符集是 ISO-8859-1...你必须有相同的字符编码。

于 2013-08-15T18:39:41.800 回答