es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Soporte de caracteres japoneses y coreanos

Estoy obteniendo � como salida en Python. Este es el código que estoy usando:

from bs4 import BeautifulSoup
import requests

with open('list.html', 'r', encoding='cp932', errors='ignore') as archivo_html:
    contenido = archivo_html.read()

sopa = BeautifulSoup(contenido, 'lxml')
etiquetas = sopa.find_all('dt')
for etiqueta in etiquetas:
    titulo = etiqueta.text

    print(etiqueta.text)

Intenté utf-16 pero luego obtengo este mensaje:

UnicodeError: La secuencia UTF-16 no comienza con BOM

No pude resolverlo por mi cuenta.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La salida “��” es el resultado de no manejar correctamente la codificación del texto. En el código, el archivo de entrada se abre con la codificación “cp932”, que es específica para la codificación de caracteres japoneses. Es posible que el archivo HTML contenga caracteres que no sean compatibles con esta codificación, lo que genera el problema en la salida.

    Una posible solución es probar otras codificaciones, como utf-8 o utf-16. Sin embargo, el mensaje de error “UTF-16 stream does not start with BOM” sugiere que el archivo puede no estar codificado en utf-16, o que el archivo no está correctamente formateado para poder ser leído en utf-16. En este caso, se recomienda verificar la codificación correcta del archivo antes de abrirlo en Python.

    Otra posibilidad es intentar usar el método “replace” en lugar de “ignore” en la función de apertura del archivo HTML:

    with open('list.html', 'r', encoding='cp932', errors='replace') as html_file:
    

    Esto reemplazará cualquier carácter no reconocido con el carácter de reemplazo Unicode, lo que debería dar como resultado una salida clara sin errores.

    En resumen, el problema se debe a una discrepancia de codificación entre el archivo y el método de lectura del archivo en Python. Asegurarse de identificar correctamente la codificación del archivo y utilizar un manejo de errores adecuado debería resolver el problema.

Comments are closed.