¿Mejores prácticas en torno a caracteres especiales en 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");Lo siento, esto no es tanto un problema muy específico como un problema general sobre el que estoy buscando recomendaciones, ya que he tenido este problema en diferentes contextos.
En este ejemplo específico, estoy usando loadtextfile() para obtener un texto que necesito analizar y ese texto puede tener caracteres especiales.Aquí estoy usando la variable "ejemplo" para mostrar cómo se ve eso para JMP; ha reemplazado algo con un símbolo "misterioso". (En caso de que no siga apareciendo aquí, es un diamante negro con un signo de interrogación). Sé que ese símbolo es Unicode FFFD (y sé que en este caso originalmente era un mu, para micras, aunque no estoy seguro). qué codificación particular tenía y que JMP no pudo descifrar).Sé que hay opciones en las preferencias para usar el juego de caracteres al cargar el archivo de texto, así que tal vez pueda probar y error hasta que esto realmente aparezca como un mu.Pero dado que mi secuencia de comandos analiza muchos archivos diferentes, no estoy seguro de poder establecer una preferencia que no tenga este problema de no poder identificar un personaje y, en cualquier caso, mi problema es realmente cómo hablar sobre cualquier personaje especial. personaje en mi guión, no por tener "misterio" en lugar de mu.
En el ejemplo anterior, pegué el carácter tal como se muestra en el registro de JMP para tenerlo en JSL (segunda línea de código RegEx).Eso funciona.contains() también funciona con el adorno especial pegado como argumento.Pero cuando guardo el JSL y lo vuelvo a abrir, ¿el carácter especial se reemplaza por? y el código que usa el símbolo pegado ya no funciona.aparentemente cualquier carácter especial en JSL corre el riesgo de perderse.
Mi tercera línea está arreglando eso para RegEx.Puedo nombrar el carácter por número para que se ejecute después de abrirlo, en un caso en el que, en lugar de un ejemplo codificado, abro un archivo de texto y tengo esos símbolos allí. Pero, ¿qué pasa si quiero hacer otras cosas con cuerdas?Hasta ahora convertí un contiene () en una expresión regular (), pero ¿hay otras formas de usar símbolos en JSL?
He tenido problemas similares con las letras griegas que JMP usa en sus informes (como una sigma).Quiero escribir un código que pruebe algún texto en el informe, pero si pego el símbolo, el JSL será reemplazado.Estos son símbolos que JMP está eligiendo y usando y, sin embargo, no puedo usarlos de manera sólida en mi JSL.
Re: ¿mejores prácticas en torno a caracteres especiales en JSL?¡Gracias!Re: ¿mejores prácticas en torno a caracteres especiales en JSL?Sí
x = "\!U266b";
Show( x ); // "♫"
y = Char To Blob( x, encoding = "utf-16be" );
Show( Hex( y ) ); // "266B"
Si ve el carácter de reemplazo Unicode (el signo de interrogación en un diamante negro), es posible que también tenga otros caracteres que se estén asignando al carácter de reemplazo. Si es posible, encuentre el conjunto de caracteres correcto para evitar el problema de muchos a uno.
Puede que haya una forma más inteligente que el fragmento anterior. La función CharToBlob convierte el carácter en una representación Unicode big-endian de 16 bits y la función Hex convierte el blob en hexadecimal imprimible.
Si no especifica el juego de caracteres de codificación para CharToBlob, el valor predeterminado será UTF-8 y, para este carácter en particular, obtendrá un valor de 3 bytes, "E299AB". Página fileformat.info para CORCHAS NOTAS TRANSMITIDAS
Re: ¿mejores prácticas en torno a caracteres especiales en JSL?¡Gracias!Lo que me faltaba era cómo hablar de eso en JSL fuera de la expresión regular de una manera que no fuera reemplazada en el archivo JSL y veo en tu ejemplo que así es como...
"\!UFFFD"
Sin embargo, eso plantea una pregunta relacionada sobre qué es el personaje y no es tanto que quiera que JMP encuentre el conjunto de caracteres correcto para abrir el archivo (otra cuestión) sino que quiero hablar sobre el personaje tal como lo usa JMP en JSL. y no tener el JSL dañado al cerrar y abrir el archivo.
En este caso busqué el personaje con bastante facilidad y encontré un código que lo identificaba y funcionó en JMP. Digamos que tengo el carácter en JMP en el registro (tal vez JMP encontró e informó un carácter mu o diga que es el sigma que JMP usa en un informe; para el código que analizará algo de texto, solo me importa qué está usando JMP como caracteres en ese texto)... ¿hay alguna forma directa de obtener un código como "UFFFD" para el carácter que JMP está usando realmente?algo como qué_es_este_carácter("�") .Cuando sigo teniendo este problema, generalmente puedo ver, copiar y pegar el carácter tal como lo usa JMP y ese es el contexto en el que quiero hablar de ello de manera sólida en JSL.
¡Gracias!
Re: ¿mejores prácticas en torno a caracteres especiales en JSL?El signo de interrogación en forma de diamante es el carácter de reemplazo de Unicode.
JMP prefiere Unicode, pero puede adivinar otros conjuntos de caracteres con distintos grados de éxito.
JMP también puede intentar conservar el juego de caracteres de un archivo cuando se vuelve a guardar, pero si el archivo tenía secuencias de bytes que no son válidas en el juego de caracteres de entrada, se convierten en el carácter de reemplazo y se convertirá en el signo de interrogación en una conversión de juego de caracteres no Unicode. (Creo que lo que sucedió en su ejemplo es una variación de esto).
Es posible que pueda seleccionar el juego de caracteres correcto (preferencias), y también es posible que el archivo esté usando mu de un juego de caracteres que no es Unicode mientras afirma ser un archivo Unicode con una marca de orden de bytes.
Hay varios sitios web que facilitan la obtención de datos hexadecimales Unicode; He usado el mapa de caracteres de Windows aquí:
Unicode escapeUnicode escapeescape Unicode
(editar) Si abre el archivo nuevamente, le sugiero que pruebe Windows 1252 como punto de partida. Creo que Cargar archivo de texto tiene opciones para especificar el juego de caracteres sin usar las preferencias.
Set it back to Best Guess when doneSet it back to Best Guess when doneVuelva a configurarlo en Mejor conjetura cuando haya terminado