Pregunta:
Supongamos que copio texto de una fuente (por ejemplo, una página web, un archivo de texto abierto en un editor como gedit o emacs) a un búfer en emacs y luego guardo el búfer en un archivo de texto.
-
Cuando copio el texto de la fuente al búfer de Emacs,
¿Realmente copio "los valores de código del texto bajo el método de codificación usado por la fuente" al búfer de Emacs? ¿O copio algo más del texto?
¿Emacs necesita conocer el método de codificación del texto en la fuente?
¿La conversión de codificación implica durante este proceso de copia?
-
Cuando Emacs escribe el búfer en un archivo de texto,
de forma predeterminada, sin configuraciones personalizadas de emacs, ¿emacs escribirá el búfer en el archivo de texto utilizando el mismo método de codificación que la fuente?
Respuesta:
Cuando copio el texto de la fuente al búfer de emacs …
Lo que copie dependerá de la aplicación desde la que esté copiando. Algunas aplicaciones lanzan cadenas codificadas en UTF-8, mientras que otras usan formatos diferentes. Emacs usa el sistema selection-coding-system
variables para determinar si decidir la codificación de los datos o presumir una codificación particular. Consulte la documentación de selection-coding-system
para obtener más detalles. Emacs tiene su propia representación interna utf-8-emacs
, por lo que cualquier inserción de texto tiene una conversión implícita en esta representación.
Cuando emacs escribe el búfer en un archivo de texto …
Para un emacs no configurado, creo que emacs usa select-safe-coding-system
para determinar un sistema de codificación o avisar al usuario si está indeciso. Aquí hay un extracto de la documentación de select-safe-coding-system
que determina cuándo emacs solicita una elección de sistema de codificación.
Fuente (formateando la mía)
"Si
default-coding-system
no es nil, ese es el primer sistema de codificación que se intenta; si puede manejar el texto,select-safe-coding-system
devuelve ese sistema de codificación. También puede ser una lista de sistemas de codificación; luego, la función prueba cada uno de ellos uno por uno. Después de probarlos todos, luego prueba el valor delbuffer-file-coding-system
actual debuffer-file-coding-system
(si no está indeciso), luego el valor predeterminado debuffer-file-coding-system
y finalmente el sistema de codificación preferido por el usuario, que el usuario puede configurar usando el comandoprefer-coding-system
(ver Reconocimiento de sistemas de codificación).Si uno de esos sistemas de codificación puede codificar de forma segura todo el texto especificado,
select-safe-coding-system
elige y lo devuelve. De lo contrario, le pide al usuario que elija de una lista de sistemas de codificación que pueden codificar todo el texto y devuelve la elección del usuario ".