Es posible que sea más sencillo (te recuerdo que no domino muy bien esto de las codificaciones) pero lo que necesito es que la variable ‘jstr’ sea un objeto String de Java y esa cadena pasarla a un método de Java, que es el que realiza el trabajo sucio con la cadena.
Un lío fruto de mi desconocimiento. Me anoto tu sugerencia para probarla. Ya comento el resultado. Gracias, Alex. De: [email protected] [mailto:[email protected]] En nombre de Alex Martínez Enviado el: miércoles, 5 de julio de 2017 11:26 Para: forum.help400 Asunto: Re: Java, ILE RPG y Unicode Hola de nuevo ¿y todo esto que haces no será más sencillo con esto ? he probado a definir jstr indicando el CCSID 13488 y también funciona D jstr s 25C varying CCSID(1200) D a s 1c inz(U'2082') D b s 1c inz(U'2074') jstr = %ucs2('H') + a + %ucs2('SO') + b ; El 5 de julio de 2017, 10:13, Javier Mora <[email protected]<mailto:[email protected]>> escribió: Hola Alex, por lo que he estado leyendo UCS es equivalente a Unicode. En las pruebas que he realizado, CCSID(*UTF16) no se puede utilizar con un CHAR VARYING, sólo lo he podido asociar a un tipo C VARYING. También he comprobado que (en 7.2) el sistema realiza conversión automática entre campos UTF-8 y UTF-16. Mi problema original era generar una cadena de caracteres con codificación Unicode y pasarla por parámetro a un método de Java (siempre desde RPG). El ejemplo que me pasaste funcionaba al contrario, pero me dio la pista para cambiar algunas cosas en mi código. Después de algunas pruebas, definiendo los parámetros como tipo C (¿UCS?) y CCSID(*UTF16), tanto en procedimientos RPG como en los métodos Java, ¡¡parece que funciona!! (aunque todavía no entiendo muy bien por qué). Básicamente con, D JC_STRING C 'java.lang.String' D jstring S O Class( *JAVA: JC_STRING ) D utf_str S 128C Varying CCSID(*UTF16) D jstr S Like( JString ) D new_UnicodeString... D PR Like( jstring ) D ExtProc( *JAVA: D JC_STRING: D *CONSTRUCTOR ) D bytes 2048C Const Varying D Ccsid( *UTF16 ) utf_str = 'H' + U'2082' + 'SO' + U'2074'; jstr = new_UnicodeString( utf_str ); // ‘jstr’ ya tiene la secuencia en Unicode parece que funciona. Tampoco tengo muy claro para qué sirve la BIF %ucs2 y si es útil en 7.2, ya que parece que el compilador se encarga de las conversiones. Si quiero poner en la cadena Unicode un símbolo que no se puede expresar con EBCDIC utilizo la secuencia U’hhhh’, donde hhhh es la codificación del símbolo. Lo dicho, no entiendo muy bien por qué funciona, pero lo hace. Saludos, Javier Mora De: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] En nombre de Alex Martínez Enviado el: miércoles, 5 de julio de 2017 8:07 Para: forum.help400 Asunto: Re: Java, ILE RPG y Unicode Hola yo tambien me pierdo...... jajajaja pero para la pregunta complicada creo que siempre puedes usar una cadena en hexadecimal y combinarlo con la funcion %ucs2 val = x'2074' + %ucs('hola datos') + x'2082' en vez de definirla como VARCHAR prueba con VARYING con CCSID 1200 para que sea UTF-16 según el manual o usando free para la hoja D como varucs2 que era lo que te indicaba en el ejemplo anterior D val s 2000C varying CCSID(1200) https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rtref/datatypecompatibility.htm El 4 de julio de 2017, 20:33, Javier Mora <[email protected]<mailto:[email protected]>> escribió: Gracias Alex por tu interés. Te respondo primero a la pregunta que no entiendes. Por ejemplo la codificación de un “2 subíndice” es \u2082 (https://unicode-table.com/es/2082/) o la codificación de un “4 subíndice” es \u2074 (https://unicode-table.com/es/2074/). Lo que necesito es mezclar este tipo de símbolos con caracteres del alfabeto y traspasarlo a un método Java que espera una String. No sé si he sido capaz de explicarme. En este caso, realmente necesito utilizar Unicode para usar determinados símbolos que necesito. Voy a probar lo que me indicas. Lo que más me confunde de todo es el lío entre Unicode, UTF-8, UTF-16, UTF-32, UCS, etc. Una cosa que he probado ha sido definir una cadena (VARCHAR) con UTF-16, pero no me deja. En cambio si me deja con ¿UCS? Cómo puedes apreciar voy un poco perdido. Gracias de nuevo. Javier Mora De: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] En nombre de Alex Martínez Enviado el: martes, 4 de julio de 2017 19:20 Para: forum.help400 Asunto: Re: Java, ILE RPG y Unicode Hola En V7R2 puedes utilizar la función GetBytes con CCSID(*UTF8) y recibir el valor en una variable de tipo varucs2 dcl-pr getbytes varchar(65535) ccsid(*utf8) extproc(*java : 'java.lang.String' : 'getBytes'); end-pr; dcl-s val varucs2(65535); val = getbytes (str); El ejemplo es de https://archive.midrange.com/midrange-l/201608/msg00404.html para mezclar con texto normal puedes usar la funcion %char (no le veo mayor problema) y no acabo de entender la pregunta ¿Cómo puedo obtener en RPG un determinado símbolo Unicode si conozco su código? No sé si lo que necesita es un simple variable = %ucs2('hola caracola') Salu2 El 4 de julio de 2017, 16:07, Javier Mora <[email protected]<mailto:[email protected]>> escribió: Hola a tod@s, necesito utilizar símbolos Unicode en un programa RPG que utiliza unas bibliotecas de Java. Sé que en Java se puede incluir símbolos Unicode en una cadena de caracteres con \uhhhh (donde hhhh es el valor hexadecimal del símbolo). Pero esta fórmula no la puedo utilizar en RPG (al menos no he sabido). Tampoco tengo un conocimiento muy profundo de Java, ni de Unicode ni cómo utilizarlo desde RPG. ¿Cómo puedo obtener en RPG un determinado símbolo Unicode si conozco su código? ¿Cómo lo mezclo con texto normal? ¿Cómo le indico en el prototipo del método Java que el texto es Unicode? He rebuscado por Internet pero no entiendo lo que leo. ¿Alguna ayuda o pista? Javier Mora ____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L. ____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L. ____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.

