Cover Image

Text To Hex

November 6, 2023 - Lesezeit: 14 Minuten

Manchmal kann es sinnvoll sein, sich Text in Hex anzeigen zu lassen. Besonders bevor man mit ihm weiterarbeitet, da es wirklich vorkommen kann, dass intern mit anderen Werten gearbeitet wird und diese Info dann im weiteren Verlauf fort ist, was zu Problemen führen kann. Dafür hab ich mal ne Funktion geschrieben:

function utf8ToHex(str) {
return Array.from(str).map(c =>
c.charCodeAt(0) < 128 ? c.charCodeAt(0).toString(16) :
encodeURIComponent(c).replace(/\%/g,'').toLowerCase()
).join('-');
}

Mithilfe dieser Funktion kann man einen String leicht analysieren. So geschehen mit folgender Funktion:

utf8ToHex(new Intl.NumberFormat('de-DE', {
style: 'currency',
currency: 'EUR',
}).format(20))

Das Ergebnis war sehr intressant:

32-30-2c-30-30-c2a0-e282ac

An der Stelle, wo ich ein Leerzeichen "20" vermutete war ein "c2a0". Sieht man beim Ausgeben nicht und ist beim Kopieren weg. Folgende Funktion funktionierte dann nicht wie gewünscht:

new Intl.NumberFormat('de-DE', {
style: 'currency',
currency: 'EUR',
}).format(20).match(new RegExp("0 €", 'gi'))

-> null

Ich erwartete, dass das geht. Weil ich ja nur ein Leerzeichen gesehen habe. Da war aber ein NOBREAK.

So geht es jetzt:

new Intl.NumberFormat('de-DE', {
style: 'currency',
currency: 'EUR',
}).format(20).replace('\xa0',' ').match(new RegExp('0 €','gi'))

2 Stunden testen und suchen, nur weil ich es nicht gesehen haben und es beim Kopieren verloren gegangen ist...