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.

Permita que los símbolos fuera del teclado sean legibles / modificables en Python.

Así que estaba construyendo un IDE en python utilizando tkinter. Cuando intenté abrir un archivo .py en él usando la función askopenfilename de tkinter.filedialog, que contenía caracteres que no están presentes en el teclado (que obtuve haciendo clic en la tecla win + punto), no se abrió y arrojó un error:

return codecs.charmap_decode(input, self.errors, decoding_table)[0]
UnicodeDecodeError: el códec 'charmap' no puede decodificar el byte 0x90 en la posición 9588: el carácter se asigna a <sin definir="">

Estoy seguro de que no puede leer los símbolos ← y →.

Mi código para abrir el archivo:

def open_function(event=None):
    if not saved:
        file_not_saved = askyesnocancel("Archivo no guardado", "Tu archivo no está guardado. ¿Quieres guardar tu archivo?")
        if file_not_saved == 1:
            save_function()
        elif file_not_saved == None:
            return
    path = askopenfilename(title="Abrir Archivo", filetypes=[("Archivos Python (*.py)", "*.py")])
    if path != "":
        with open(path, "r") as file:
            code = file.read()
            editing_area.delete("1.0", "end")
            editing_area.insert("1.0", code)
            set_file_path(path)
            set_file_name(basename(path))
        set_saved(True)
    elif path == "":
        showerror("Error", "Ocurrió un error en la ruta del archivo. Por favor, abre tu archivo nuevamente.")

Entonces mi pregunta obviamente es cómo hacer que la función open de python pueda leer caracteres que no están en el teclado.

Estoy utilizando python 3.10.1.

¡Cualquier ayuda sería apreciada!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Cuando se lee un archivo con caracteres que no están presentes en un teclado, es necesario especificar el parámetro de codificación en la función open(). En este caso, estás obteniendo un UnicodeDecodeError, lo que significa que el archivo no está en la codificación predeterminada utf-8. Puedes intentar abrir el archivo con la codificación utf-16, que puede manejar una gama más amplia de caracteres, incluyendo aquellos con los que estás teniendo problemas. Cambia esta línea de código:

    with open(path, "r") as file:
    

    a

    with open(path, "r", encoding="utf-16") as file:
    

    Esto debería resolver tu problema y permitirte leer el archivo con caracteres que no están presentes en un teclado.

Comments are closed.