Wie kann ich sicherstellen, dass Perl 6 sicher für Unicode-Daten ist?

8

Ein naives Perl 6-Programm ist in Bezug auf Unicode nicht rundum sicher. Es sieht so aus, als ob intern Normalisierungsformularzusammensetzung (NFC) für den Str-Typ verwendet wird:

%Vor%

Durch die Dokumente stochern ich kann nichts über dieses Verhalten sehen und ich finde es sehr schockierend. Ich kann nicht glauben, dass Sie auf die Byte-Ebene zurückgehen müssen, um Text zu wiederholen:

%Vor%

Müssen alle Textdateien in NFC vorliegen, um mit Perl 6 sicher gerundet zu werden? Was ist, wenn das Dokument in NFD sein soll? Ich muss hier etwas vermissen. Ich kann nicht glauben, dass dies absichtliches Verhalten ist.

    
Chas. Owens 23.09.2016, 14:57
quelle

2 Antworten

5

Die Antwort scheint zu sein, den Uni-Typ zu verwenden (die Basisklasse für NFD, NFC, usw.), aber das tut es jetzt nicht wirklich und es gibt keinen guten Weg, die Datei in eine Uni-Zeichenkette zu bringen. Bis zu einem unbenannten Punkt in der Zukunft können Sie also eine nicht normalisierte Datei nicht umkehren, es sei denn, Sie behandeln sie als Byte.

    
Chas. Owens 23.09.2016 21:35
quelle
2

Verwenden Sie UTF8-C8 . Aus der Dokumentation :

  

Sie können UTF8-C8 mit jedem Datei-Handle verwenden, um die genauen Bytes als zu lesen   Sie sind auf der Festplatte. Sie können beim Drucken lustig aussehen, wenn Sie drucken   es mit einem UTF8-Griff aus. Wenn Sie es auf einen Griff drucken, wo der   Ausgabe ist UTF8-C8, dann wird es so wiedergegeben, wie Sie normalerweise erwarten würden,   und ein Byte für bytegenaue Kopie sein.

    
Christopher Bottoms 20.10.2017 15:36
quelle

Tags und Links