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(並且我知道在這種情況下,最初它是一個μ,對於微米,儘管不確定JMP無法計算出它的具體編碼是什麼)。我知道加載文字檔案時使用的字元集首選項中有一些選項,所以也許我可以反覆試驗,直到它真正顯示為 mu。但由於我的腳本正在查看很多不同的文件,我不確定我是否可以設置一個首選項,以免出現無法計算出角色的問題,無論如何,我的問題實際上是如何談論任何特殊的問題我的劇本中的角色,而不是用“神秘”代替“mu”。
在上面的範例中,我貼上了 JMP 日誌中顯示的字符,以便將其包含在 JSL(RegEx 程式碼的第二行)中。這樣可行。contains() 也可以將特殊的小玩意作為參數貼到其中。但是,當我保存 JSL 並重新打開它時,特殊字元會替換為 ?並且使用貼上符號的代碼不再有效。似乎 JSL 中的任何特殊字元都有丟失的風險。
我的第三行是修復正規表示式的問題。我可以按數字調出字符,以便它在打開後運行 - 在這種情況下,我打開一個文本文件並在其中包含這些符號,而不是硬編碼示例。 但是如果我想做任何其他字串事情怎麼辦?到目前為止,我將 contains() 轉換為 regex() 但有其他方法可以在 JSL 中使用符號嗎?
關於 JMP 在其報告中使用的希臘字母(如西格瑪),我也遇到類似的問題。我想編寫程式碼來測試報告中的某些文本,但如果我貼上符號,JSL 將被替換。這些是 JMP 正在選擇和使用的符號,但我無法在 JSL 中可靠地使用它們。
回覆:JSL 中特殊字元的最佳實踐?謝謝!回覆:JSL 中特殊字元的最佳實踐?是的
x = "\!U266b";
Show( x ); // "♫"
y = Char To Blob( x, encoding = "utf-16be" );
Show( Hex( y ) ); // "266B"
如果您看到 Unicode 替換字元(黑色菱形中的問號),那麼您可能還有其他字元對應到替換字元。 如果可能,找到正確的字元集以避免多對一問題。
可能有比上面的程式碼片段更聰明的方法。 CharToBlob 函數將字元轉換為 16 位元大端 Unicode 表示形式,Hex 函數將 blob 轉換為可列印的十六進位。
如果您沒有為 CharToBlob 指定編碼字元集,它將預設為 UTF-8,對於這個特定字符,您將獲得一個 3 位元組值“E299AB”八分音符的 fileformat.info 頁面
回覆:JSL 中特殊字元的最佳實踐?謝謝!我缺少的一點是如何在正則表達式之外的 JSL 中以一種不會在 JSL 文件中被替換的方式談論這一點,我從你的示例中看到這是如何...
“\!UFFFD”
這提出了一個相關的問題,即字元是什麼,並不是我希望 JMP 找到正確的字元集來開啟檔案(整個其他問題),而是我想討論 JSL 中 JMP 使用的字元並且在關閉和開啟檔案時JSL 不會損壞。
在這種情況下,我很容易地查找了該字符,並找到了一個可以識別它的代碼,並且它可以在 JMP 中工作。 假設我在日誌中包含JMP 中的字符(也許JMP 確實找到並報告了mu 字符,或者說它是JMP 本身在報告中使用的sigma - 對於將解析某些文本的代碼,我只關心JMP 使用什麼作為字元該文字)...是否有任何直接方法可以取得 JMP 實際使用的字元的程式碼(如“UFFFD”)?就像是這是什麼字元(“�”) 。當我不斷遇到這個問題時,我通常可以看到並複製並貼上 JMP 使用的字符,這就是我想在 JSL 中詳細討論它的上下文。
謝謝!
回覆:JSL 中特殊字元的最佳實踐?菱形問號是 Unicode 替換字元。
JMP 更喜歡 Unicode,但可以猜測其他字元集,並取得不同程度的成功。
JMP 也可能在重新儲存檔案時嘗試保留檔案的字元集,但如果檔案具有在輸入字元集中無效的位元組序列,它們將成為替換字符,並且將成為中的問號非 Unicode 字元集轉換。 (我認為您的示例中發生了一些變化。)
您有可能選擇正確的字元集(首選項),也有可能該檔案使用非 Unicode 字元集中的 mu,同時聲稱是帶有位元組順序標記的 Unicode 檔案。
有許多網站可以非常輕鬆地取得 Unicode 十六進位資料;我在這裡使用了 Windows 字元對映表:
Unicode escapeUnicode escape統一碼轉義
(編輯)如果您再次打開該文件,我建議嘗試以 Windows 1252 作為起點。 我認為載入文字檔案具有用於指定字元集而不使用首選項的選項。
Set it back to Best Guess when doneSet it back to Best Guess when done完成後將其設置回最佳猜測