command-line – Convertir entre formularios de normalización Unicode en la línea de comandos de Unix

Pregunta:

En Unicode, algunas combinaciones de caracteres tienen más de una representación.

Por ejemplo, el carácter ä se puede representar como

  • "ä", que es el punto de código U + 00E4 (dos bytes c3 a4 en codificación UTF-8), o como
  • "ä", que son los dos puntos de código U + 0061 U + 0308 (tres bytes 61 cc 88 en UTF-8).

Según el estándar Unicode, las dos representaciones son equivalentes pero en diferentes "formas de normalización", consulte UAX # 15: Formas de normalización Unicode .

La caja de herramientas de Unix tiene todo tipo de herramientas de transformación de texto, me vienen a la mente sed , tr , iconv , Perl. ¿Cómo puedo realizar una conversión NF rápida y sencilla en la línea de comandos?

Respuesta:

Puede utilizar la utilidad uconv de ICU . La normalización se logra mediante la transliteración ( -x ).

$ uconv -x any-nfd <<<ä | hd
00000000  61 cc 88 0a                                       |a...|
00000004
$ uconv -x any-nfc <<<ä | hd
00000000  c3 a4 0a                                          |...|
00000003

En Debian, Ubuntu y otros derivados, uconv está en el paquete libicu-dev . En Fedora, Red Hat y otros derivados, y en los puertos BSD, está en el paquete icu .

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım