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!
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 unUnicodeDecodeError
, lo que significa que el archivo no está en la codificación predeterminadautf-8
. Puedes intentar abrir el archivo con la codificaciónutf-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:a
Esto debería resolver tu problema y permitirte leer el archivo con caracteres que no están presentes en un teclado.