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");申し訳ありませんが、これは非常に具体的な問題ではなく、さまざまな状況でこの問題を経験したため、推奨事項を探している一般的な問題です。
この特定の例では、loadtextfile() を使用して、解析する必要があるテキストを取得していますが、そのテキストには特殊文字を含めることができます。ここでは変数「example」を使用して、それが JMP にどのように見えるかを示しています。これは何かを「ミステリー」シンボルに置き換えています。 (ここで引き続き表示されない場合に備えて、疑問符が入った黒いひし形です。) そのシンボルが Unicode FFFD であることはわかっています (そして、この場合、最初はミクロンを表す mu だったことがわかりますが、確かではありません) JMP が認識できなかった特定のエンコーディングが何か)。テキスト ファイルをロードするときに使用する文字セットのオプションがあることはわかっているので、これが本当に mu として表示されるまで試行錯誤できるかもしれません。しかし、私のスクリプトは多くの異なるファイルを調べているので、キャラクターを見つけ出すのに失敗するというこの問題を回避する設定を設定できるかどうかわかりません。いずれにせよ、私の問題は実際に特別なものについて話す方法です。私の脚本のキャラクターは、ミューの代わりに「ミステリー」を持っているわけではありません。
上の例では、JSL (コード RegEx の 2 行目) に含めるために、JMP ログに表示されている文字を貼り付けました。それはうまくいきます。contains() は、特別な doodad を引数として貼り付けても機能します。しかし、JSL を保存して再度開くと、特殊文字は ? に置き換えられます。貼り付けられたシンボルを使用するコードは機能しなくなります。どうやら、JSL の特殊文字はすべて失われる危険があるようです。
3行目は正規表現の修正です。文字を番号で呼び出すことができるので、ハードコードされた例の代わりにテキスト ファイルを開いてそこにそれらの記号が含まれている場合、開いた後に実行されます。 しかし、他の文字列処理を実行したい場合はどうすればよいでしょうか?これまでのところ、contains() を regex() に変換しましたが、JSL でシンボルを使用する他の方法はありますか?
JMP がレポートで使用するギリシャ文字 (シグマなど) に関しても同様の問題がありました。レポート内のテキストをテストするコードを書きたいのですが、シンボルを貼り付けると JSL が置き換えられてしまいます。これらは JMP が選択して使用しているシンボルですが、私の JSL ではそれらを確実に使用できません。
Re: JSL の特殊文字に関するベスト プラクティスはありますか?ありがとう!Re: JSL の特殊文字に関するベスト プラクティスはありますか?はい
x = "\!U266b";
Show( x ); // "♫"
y = Char To Blob( x, encoding = "utf-16be" );
Show( Hex( y ) ); // "266B"
Unicode 置換文字 (黒いひし形の中に疑問符) が表示されている場合は、他の文字も置換文字にマップされている可能性があります。 可能であれば、多対 1 の問題を回避するために適切な文字セットを見つけてください。
上記のスニペットよりも賢い方法があるかもしれません。 CharToBlob 関数は文字を 16 ビット ビッグ エンディアン Unicode 表現に変換し、Hex 関数は BLOB を印刷可能な 16 進数に変換します。
CharToBlob のエンコード文字セットを指定しない場合、デフォルトで UTF-8 になり、この特定の文字の場合は 3 バイト値「E299AB」が取得されます。 BEAMED EIGHTH Notes の fileformat.info ページ
Re: JSL の特殊文字に関するベスト プラクティスはありますか?ありがとう!私が見逃していたのは、JSL ファイル内で置き換えられない方法で、正規表現の外で JSL でそれについて話す方法でした。あなたの例から、これがその方法であることが分かりました...
「\!UFFFD」
ただし、その文字が何であるかという関連した質問が生じます。それは、JMP にファイルを開くための適切な文字セットを見つけてもらいたいということではなく (まったく別の問題)、JSL で JMP によって使用される文字について話したいのです。ファイルを閉じて開くときに JSL が破損していないこと。
この場合、非常に簡単に文字を検索し、それを識別するコードを見つけました。それは JMP で機能しました。 ログに JMP の文字があるとします (おそらく、JMP が mu 文字を見つけて報告したか、またはそれが JMP 自体がレポートで使用するシグマであると考えられます)。テキストを解析するコードの場合、JMP が文字として何を使用しているかだけを気にします。そのテキスト)...JMPが実際に使用している文字の「UFFFD」のようなコードを取得する直接的な方法はありますか?何かのようなものこの文字は何ですか("�") 。この問題が引き続き発生する場合は、通常、JMP で使用されている文字を表示してコピーして貼り付けることができます。これが、JSL でこの問題についてしっかりと説明したいコンテキストです。
ありがとう!
Re: JSL の特殊文字に関するベスト プラクティスはありますか?ひし形の疑問符は Unicode 置換文字です。
JMP は Unicode を優先しますが、成功の程度はさまざまですが、他の文字セットを推測することもできます。
JMP は、ファイルを再保存するときにファイルの文字セットを保持しようとする場合もありますが、ファイルに入力文字セットで無効なバイト シーケンスが含まれていた場合、それらが置換文字となり、疑問符になります。非 Unicode 文字セット変換。 (あなたの例では、これのいくつかのバリエーションが起こったと思います。)
正しい文字セット (環境設定) を選択している可能性もあります。また、ファイルがバイト オーダー マークを持つ Unicode ファイルであると主張しながら、非 Unicode 文字セットの mu を使用している可能性もあります。
Unicode 16 進数データを簡単に取得できる Web サイトが多数あります。ここでは Windows 文字マップを使用しました。
Unicode escapeUnicode escapeユニコードエスケープ
(編集) ファイルを再度開く場合は、開始点として Windows 1252 を試してみることをお勧めします。 Load Text Fileには環境設定を使用せずに文字セットを指定するオプションがあると思います。
Set it back to Best Guess when doneSet it back to Best Guess when done完了したら、「最良の推測」に戻します