9.12. Unicode-Texte in Hex-Code umwandeln

Java kann Unicode. XML kann Unicode. Somit kann auch PDFUnit Unicode. In Kapitel 7: „Unicode“ wird das Thema Unicode ausführlich beschrieben.

Dieses Kapitel beschreibt ein kleines Werkzeug, das einen Unicode-String in seinen ASCII-Hex-Code umwandelt, damit sie diesen in Ihren Tests verwenden können. Für wenige unlesbare Zeichen ist dieser Weg einfacher, als einen neuen Font auf Ihrem Rechner zu installieren. Falls Sie das überhaupt dürfen.

Das Programm ConvertUnicodeToHex konvertiert eine beliebige Zeichenkette in ASCII-Code und escaped dabei alle Nicht-ASCII-Zeichen in ihren jeweiligen Unicode-Hex-Code. Beispielsweise wird das Euro-Zeichen in \u20AC umgewandelt.

Die Eingabedatei selber kann in einem beliebigen Encoding vorliegen, es muss nur vor der Programmausführung korrekt gesetzt sein.

Aufruf

Das Javaprogramm wird mit dem Parameter -D gestartet:

::
:: Converting Unicode content of the input file to hex code.
::
  
@echo off
setlocal
set CLASSPATH=./lib/pdfunit-2015.10/*;%CLASSPATH%

set TOOL=com.pdfunit.tools.ConvertUnicodeToHex
set OUT_DIR=./tmp
set IN_FILE=convert-unicode-to-hex.in.txt

java -Dfile.encoding=UTF-8 %TOOL%  %IN_FILE%  %OUT_DIR% 
endlocal

Der vorletzte Parameter ist die Eingabedatei, der letzte Parameter das Ausgabeverzeichnis.

Eingabe

Die im Skript verwendete Eingabedatei convert-unicode-to-hex.in.txt enthält folgende Werte:

äöü € @

Ausgabe

Der Name wird automatisch aus dem Namen der Eingabedatei abgeleitet. Die Datei _convert-unicode-to-hex.out.txt enthält dann den Hex-Code:

#Unicode created by com.pdfunit.tools.ConvertUnicodeToHex
#Wed Jan 16 21:50:04 CET 2013
convert-unicode-to-hex.in_as-ascii=\u00E4\u00F6\u00FC \u20AC @

Die Ausgabedatei wird im Encoding der Java-Runtime erstellt. Dazu wird der Wert der Umgebungsvariablen file.encoding ausgelesen.

Die Eingabe selber wird getrimmt. Wenn Sie für Ihren Test Leerzeichen am Anfang oder Ende benötigen, müssen Sie diese nach der Umwandlung in Unicode wieder hinzufügen.