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

4

Tengo dos problemas que parecen estar relacionados. Al copiar texto o nombres de archivos que contienen diéresis o, por ejemplo, å ä ö, parece que OS X no puede manejar a los personajes de una manera sana. Aparentemente este es un problema bien conocido. Por ejemplo:

Este es un ejemplo del resultado habitual al copiar texto de un nombre de archivo o desde un pdf en Vista previa y pegarlo en un editor. La primera línea es el resultado, la otra se corrige.

Ladiferenciaesclaramentevisible,yaquelafuenteactual(CourierPrime)noadmitelaprimeraversión.

¿Hayalgunamaneradearreglaresto?Alternativamente,¿hayalgúnservicioOSXdisponiblepara"limpiar" el texto o normalizarlo de la manera correcta?

    
pregunta trmdttr 01.03.2013 - 17:37

1 respuesta

5

HFS + requiere que los nombres de archivo estén en forma descompuesta (LATINA PEQUEÑA LETRA A + DIAERESIS COMBINADA) en lugar de forma compuesta (LETRA LISTA PEQUEÑA A CON DIAERESIS). Puede utilizar iconv para convertir 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+nousaNFD(formanormaldescompuesta).De enlace :

  

Importante: Los términos utilizados en esta Q & A, precompuestos y descompuestos, corresponden aproximadamente a las Formas C y D de Unicode Normal, respectivamente. Sin embargo, la mayoría de los formatos de volúmenes no siguen la especificación exacta para estas formas normales. Por ejemplo, HFS Plus (Mac OS Extended) utiliza una variante de la Forma D normal en la que U + 2000 a través de U + 2FFF, U + F900 a través de U + FAFF, y U + 2F800 a través de U + 2FAFF no se descomponen (esto evita problemas con conversiones de ida y vuelta de 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}")'

    
respondido por el user495470 02.03.2013 - 16:56

Lea otras preguntas en las etiquetas