4 votos

Normalización Unicode para nombres de archivos y texto copiado de pdf:s

Tengo dos problemas que parecen estar relacionados. Al copiar texto o nombres de archivo que contienen diéresis o, por ejemplo, å ä ö, OS X parece no poder manejar los caracteres de forma sensata. Al parecer, este es un problema bien conocido. Por ejemplo:

Este es un ejemplo del resultado habitual al copiar el texto de un nombre de archivo o del interior de un pdf en Vista Previa y pegarlo en un editor. La primera línea es el resultado, la otra está corregida.

example of copy

La diferencia es claramente visible, ya que la fuente actual (Courier Prime) no es compatible con la primera versión.

¿Hay alguna forma de arreglar esto? Alternativamente, ¿hay algún servicio de OS X disponible para "limpiar" el texto o normalizarlo de forma correcta?

6voto

Fuzzy Purple Monkey Puntos 702

HFS+ requiere que los nombres de archivo estén en forma descompuesta (LETRA PEQUEÑA LATINA A + DIAERESIS COMBINADA) en lugar de la forma compuesta (LETRA PEQUEÑA LATINA A CON DIAERESIS). Puede utilizar iconv para convertir el texto en forma compuesta:

$ echo -n ä | xxd -p
c3a4
$ touch ä
$ ls | tr -d '\n' | xxd -p
61cc88
$ ls | tr -d '\n' | iconv -f utf-8-mac -t utf-8 | xxd -p
c3a4

HFS+ no utiliza NFD (forma normal descompuesta). En http://developer.apple.com/library/mac/#qa/qa1173/_index.html :

Importante: Los términos utilizados en esta sección, precompuesto y descompuesto, corresponden aproximadamente a las formas normales C y D de Unicode, respectivamente. Sin embargo, la mayoría de los formatos de volumen no siguen la especificación exacta de estas formas normales. Por ejemplo, HFS Plus (Mac OS Extended) utiliza una variante de la forma normal D en la que las letras U+2000 a U+2FFF, U+F900 a U+FAFF y U+2F800 a U+2FAFF no están descompuestas (esto evita problemas con las conversiones de ida y vuelta de las antiguas codificaciones de texto de Mac).

Algo como esto también podría funcionar:

python -c 'import unicodedata as ud; print ud.normalize("NFC", u"\N{LATIN SMALL LETTER A}\N{COMBINING DIAERESIS}")'

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X