Hola Prueba con algo así, siendo Rstr un campos varying y Jstr un clase String de Java
Rstr = %ucs2('H') + a + %ucs2('SO') + b ; jstr = newString( Rstr ); El 5 de julio de 2017, 12:02, Javier Mora <jm...@musgrave.es> escribió: > 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:* forum.help400-boun...@listas.combios.es [mailto: > forum.help400-boun...@listas.combios.es] *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 <jm...@musgrave.es> 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:* forum.help400-boun...@listas.combios.es [mailto: > forum.help400-boun...@listas.combios.es] *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 <jm...@musgrave.es> 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:* forum.help400-boun...@listas.combios.es [mailto: > forum.help400-boun...@listas.combios.es] *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 <jm...@musgrave.es> 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. >
____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.