migliori pratiche sui caratteri speciali 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");Mi dispiace, questo non è tanto un problema molto specifico quanto un problema generale su cui sto cercando consigli poiché ho riscontrato questo problema in diversi contesti.
In questo esempio specifico sto utilizzando loadtextfile() per ottenere del testo che devo analizzare e quel testo può contenere caratteri speciali.qui sto usando la variabile "esempio" per mostrare come appare a JMP: ha sostituito qualcosa con un simbolo "misterioso". (nel caso in cui non continui a essere visualizzato qui è un diamante nero con un punto interrogativo.) So che il simbolo è unicode FFFD (e so che in questo caso originariamente era un mu, per micron anche se non ne sono sicuro che codifica particolare aveva e che JMP non riusciva a capire).So che ci sono opzioni nelle preferenze per il set di caratteri da utilizzare durante il caricamento del file di testo, quindi forse potrei provare ed eseguire errori fino a quando questo non verrà visualizzato come mu.Ma poiché il mio script esamina molti file diversi, non sono sicuro di poter impostare una preferenza che non abbia questo problema di non riuscire a elaborare un personaggio e in ogni caso il mio problema è come parlare di qualcosa di speciale personaggio nella mia sceneggiatura, non con "mistero" al posto di mu.
Nell'esempio sopra ho incollato il carattere così come era mostrato nel log JMP per averlo in JSL (seconda riga del codice RegEx).Che funzioni.contiene() funziona anche con lo speciale ornamento incollato come argomento.Ma quando salvo il JSL e lo riapro, il carattere speciale viene sostituito con ? e il codice che utilizza il simbolo incollato non funziona più.apparentemente tutti i caratteri speciali in JSL rischiano di perdersi.
La mia terza riga sta risolvendo il problema per RegEx.Posso richiamare il carattere per numero in modo che venga eseguito dopo l'apertura, in un caso in cui invece di un esempio hardcoded apro un file di testo e ho quei simboli al suo interno. Ma cosa succede se voglio fare altre cose con le corde?finora ho convertito contiene() in regex() ma esistono altri modi per utilizzare i simboli in JSL?
Ho riscontrato problemi simili con le lettere greche utilizzate da JMP nei suoi rapporti (come un sigma).Voglio scrivere codice che verifica la presenza di testo nel report, ma se incollo il simbolo il JSL verrà sostituito.Questi sono i simboli che JMP sceglie e utilizza e tuttavia non riesco a utilizzarli in modo affidabile nel mio JSL.
Ri: migliori pratiche relative ai caratteri speciali in JSL?Grazie!Ri: migliori pratiche relative ai caratteri speciali in JSL?SÌ
x = "\!U266b";
Show( x ); // "♫"
y = Char To Blob( x, encoding = "utf-16be" );
Show( Hex( y ) ); // "266B"
se vedi il carattere sostitutivo Unicode (il punto interrogativo in un diamante nero), potresti avere anche altri caratteri che vengono mappati sul carattere sostitutivo. Se possibile, trova il set di caratteri corretto per evitare il problema molti-a-uno.
Potrebbe esserci un modo più intelligente rispetto allo snippet sopra. La funzione CharToBlob converte il carattere in una rappresentazione Unicode big-endian a 16 bit e la funzione Hex converte il BLOB in un formato esadecimale stampabile.
Se non specifichi il set di caratteri di codifica per CharToBlob, verrà impostato automaticamente su UTF-8 e per questo particolare carattere otterrai un valore di 3 byte, "E299AB" pagina fileformat.info per ottavi con fascio
Ri: migliori pratiche relative ai caratteri speciali in JSL?Grazie!quello che mi mancava era come parlarne in JSL al di fuori delle espressioni regolari in un modo che non venisse sostituito nel file JSL e vedo dal tuo esempio che è così...
"\!UFFFD"
Ciò solleva però una domanda correlata su cosa sia il carattere e non è tanto che voglio che JMP trovi il set di caratteri giusto per aprire il file (tutta l'altra questione) ma che voglio parlare del carattere usato da JMP in JSL e non avere il JSL danneggiato alla chiusura e all'apertura del file.
In questo caso ho cercato il carattere abbastanza facilmente e ho trovato un codice che lo identificava e funzionava in JMP. Supponiamo che io abbia il carattere in JMP nel registro (forse JMP ha trovato e segnalato un carattere mu o ha detto che è il sigma che JMP stesso utilizza in un rapporto - per il codice che analizzerà del testo mi interessa solo ciò che JMP sta utilizzando come caratteri in quel testo)... esiste un modo diretto per ottenere un codice come "UFFFD" per il carattere che JMP sta effettivamente utilizzando?qualcosa di simile a cos'è_questo_carattere("�") .Quando continuo ad avere questo problema, in genere riesco a vedere, copiare e incollare il carattere utilizzato da JMP e questo è il contesto in cui voglio parlarne in modo approfondito in JSL.
Grazie!
Ri: migliori pratiche relative ai caratteri speciali in JSL?Il punto interrogativo a rombo è il carattere sostitutivo Unicode.
JMP preferisce Unicode, ma riesce a indovinare altri set di caratteri con vari gradi di successo.
JMP potrebbe anche tentare di preservare il set di caratteri di un file quando viene salvato nuovamente, ma se il file contiene sequenze di byte non valide nel set di caratteri di input, queste diventeranno il carattere sostitutivo e diventerà il punto interrogativo in una conversione del set di caratteri non Unicode. (Penso che qualche variazione di questo sia ciò che è successo nel tuo esempio.)
È possibile che tu possa selezionare il set di caratteri corretto (preferenze), ed è anche possibile che il file utilizzi mu da un set di caratteri non Unicode mentre afferma di essere un file Unicode con un Byte Order Mark.
Esistono numerosi siti Web che rendono abbastanza semplice ottenere i dati esadecimali Unicode; Ho usato la mappa caratteri di Windows qui:
Unicode escapeUnicode escapeFuga Unicode
(modifica) Se apri di nuovo il file, suggerirei di provare Windows 1252 come punto di partenza. Penso che Carica file di testo abbia opzioni per specificare il set di caratteri senza utilizzare le preferenze.
Set it back to Best Guess when doneSet it back to Best Guess when doneRiportalo su Ipotesi migliore una volta terminato