Best Practices rund um Sonderzeichen in JSL?example="blah blah Width = 25.0 �m ..some more stuff";
widthtext=regex(example,"Width\s=\s+\d+[.]\d+\s[\w?�]m");<BR /><BR />widthtext=regex(example,"Width\s=\s+\d+[.]\d+\s[\w?\x{FFFD}]m");Es tut mir leid, dass es sich hierbei weniger um ein sehr spezifisches Problem als vielmehr um ein allgemeines Problem handelt. Ich suche nach Empfehlungen, da ich dieses Problem in verschiedenen Kontexten hatte.
In diesem speziellen Beispiel verwende ich loadtextfile(), um Text abzurufen, den ich analysieren muss, und dieser Text kann Sonderzeichen enthalten.Hier verwende ich die Variable „example“, um zu zeigen, wie das für JMP aussieht – sie hat etwas durch ein „Mystery“-Symbol ersetzt. (Falls es hier nicht weiterhin angezeigt wird, handelt es sich um eine schwarze Raute mit einem Fragezeichen darin.) Ich weiß, dass das Symbol Unicode FFFD ist (und ich weiß in diesem Fall, dass es ursprünglich ein Mu war, für Mikrometer, obwohl ich nicht sicher bin welche spezielle Codierung es hatte, die JMP nicht erkennen konnte).Ich weiß, dass es in den Voreinstellungen Optionen für den Zeichensatz gibt, der beim Laden der Textdatei verwendet werden soll, also könnte ich vielleicht etwas ausprobieren, bis das wirklich als mu angezeigt wird.Aber da mein Skript viele verschiedene Dateien durchsucht, bin ich mir nicht sicher, ob ich eine Voreinstellung festlegen kann, bei der es nicht zu dem Problem kommt, dass es nicht gelingt, einen Charakter auszuarbeiten, und auf jeden Fall liegt mein Problem darin, wie ich über bestimmte Besonderheiten sprechen soll Charakter in meinem Drehbuch, nicht mit „Mystery“ statt „Mu“.
Im obigen Beispiel habe ich das Zeichen so eingefügt, wie es im JMP-Protokoll angezeigt wurde, um es in JSL zu haben (zweite Codezeile RegEx).Das funktioniert.enthält() funktioniert auch mit dem als Argument eingefügten speziellen Doodad.Aber wenn ich die JSL speichere und erneut öffne, wird das Sonderzeichen durch „?“ ersetzt. und der Code, der das eingefügte Symbol verwendet, funktioniert nicht mehr.Anscheinend besteht die Gefahr, dass Sonderzeichen in JSL verloren gehen.
Meine dritte Zeile behebt das Problem für RegEx.Ich kann das Zeichen nach Nummer aufrufen, damit es nach dem Öffnen ausgeführt wird – in einem Fall, in dem ich anstelle eines fest codierten Beispiels eine Textdatei öffne und diese Symbole darin habe. Aber was ist, wenn ich noch andere String-Dinge machen möchte?Bisher habe ich „contains()“ in „regex()“ konvertiert, aber gibt es noch andere Möglichkeiten, Symbole in JSL zu verwenden?
Ich hatte ähnliche Probleme mit den griechischen Buchstaben, die JMP in seinen Berichten verwendet (z. B. Sigma).Ich möchte Code schreiben, der auf Text im Bericht prüft, aber wenn ich das Symbol einfüge, wird die JSL ersetzt.Dies sind Symbole, die JMP auswählt und verwendet, und dennoch kann ich sie in meiner JSL nicht robust verwenden.
Betreff: Best Practices rund um Sonderzeichen in JSL?Danke!Betreff: Best Practices rund um Sonderzeichen in JSL?Ja
x = "\!U266b";
Show( x ); // "♫"
y = Char To Blob( x, encoding = "utf-16be" );
Show( Hex( y ) ); // "266B"
Wenn Sie das Unicode-Ersatzzeichen (das Fragezeichen in einer schwarzen Raute) sehen, werden möglicherweise auch andere Zeichen dem Ersatzzeichen zugeordnet. Suchen Sie nach Möglichkeit den richtigen Zeichensatz, um das Viele-zu-Eins-Problem zu vermeiden.
Möglicherweise gibt es einen clevereren Weg als den obigen Ausschnitt. Die CharToBlob-Funktion wandelt das Zeichen in eine 16-Bit-Big-Endian-Unicode-Darstellung um, und die Hex-Funktion wandelt den Blob in ein druckbares Hex um.
Wenn Sie den Codierungszeichensatz für CharToBlob nicht angeben, wird standardmäßig UTF-8 verwendet, und für dieses bestimmte Zeichen erhalten Sie einen 3-Byte-Wert „E299AB“. fileformat.info-Seite für BEAMED EIGHTH NOTES
Betreff: Best Practices rund um Sonderzeichen in JSL?Danke!Was mir gefehlt hat, war, wie man darüber in JSL außerhalb von Regex auf eine Weise sprechen kann, die in der JSL-Datei nicht ersetzt wird, und ich sehe aus Ihrem Beispiel, dass dies so ist ...
„\!UFFFD“
Das wirft jedoch eine verwandte Frage darüber auf, was das Zeichen ist, und es geht nicht so sehr darum, dass JMP den richtigen Zeichensatz zum Öffnen der Datei findet (ein ganz anderes Problem), sondern darum, dass ich über das Zeichen sprechen möchte, wie es von JMP in JSL verwendet wird und die JSL darf beim Schließen und Öffnen der Datei nicht beschädigt sein.
In diesem Fall habe ich das Zeichen ziemlich einfach nachgeschlagen und einen Code gefunden, der es identifizierte und in JMP funktionierte. Angenommen, ich habe das Zeichen in JMP im Protokoll (vielleicht hat JMP ein Mu-Zeichen gefunden und gemeldet oder es ist das Sigma, das JMP selbst in einem Bericht verwendet – für Code, der Text analysiert, ist es mir nur wichtig, welche Zeichen JMP in verwendet). dieser Text) ... gibt es eine direkte Möglichkeit, einen Code wie „UFFFD“ für das Zeichen zu erhalten, das JMP tatsächlich verwendet?etwas wie what_is_this_character("�") .Wenn dieses Problem weiterhin auftritt, kann ich im Allgemeinen das von JMP verwendete Zeichen sehen, kopieren und einfügen, und das ist der Kontext, in dem ich ausführlich in JSL darüber sprechen möchte.
Danke!
Betreff: Best Practices rund um Sonderzeichen in JSL?Das Diamant-Fragezeichen ist das Unicode-Ersatzzeichen.
JMP bevorzugt Unicode, kann aber andere Zeichensätze mit unterschiedlichem Erfolg erraten.
JMP versucht möglicherweise auch, den Zeichensatz einer Datei beim erneuten Speichern beizubehalten. Wenn die Datei jedoch Bytesequenzen enthielt, die im Eingabezeichensatz nicht gültig sind, werden diese zum Ersatzzeichen und es wird zum Fragezeichen in eine Nicht-Unicode-Zeichensatzkonvertierung. (Ich denke, in Ihrem Beispiel ist eine Variation davon passiert.)
Es ist möglich, dass Sie den richtigen Zeichensatz (Einstellungen) ausgewählt haben, und es ist auch möglich, dass die Datei mu aus einem Nicht-Unicode-Zeichensatz verwendet, obwohl sie vorgibt, eine Unicode-Datei mit einer Byte-Reihenfolge-Markierung zu sein.
Es gibt eine Reihe von Websites, die es ziemlich einfach machen, die Unicode-Hex-Daten zu erhalten; Ich habe hier die Windows-Zeichentabelle verwendet:
Unicode escapeUnicode escapeUnicode-Escape
(Bearbeiten) Wenn Sie die Datei erneut öffnen, würde ich vorschlagen, Windows 1252 als Ausgangspunkt zu verwenden. Ich denke, „Load Text File“ bietet Optionen zum Festlegen des Zeichensatzes, ohne die Einstellungen zu verwenden.
Set it back to Best Guess when doneSet it back to Best Guess when doneWenn Sie fertig sind, stellen Sie es wieder auf „Best Guess“ ein