Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-01

sistemas unicode

10 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

franmate en gmail.com

Hola
Buen a�o a todos y todas.
�Conoceis alguna forma de saber si el sistema operativo sobre el que corre una aplicaci�n es unicode?
He mirado en lazarus.freepascal.org y no encuentro nada, tambi�n lo intent� con las variables de entorno, pero nada. Necesito saber el CHARSET del sistema .
�El motivo?, si un usuario guarda los datos con el nombre "sesi�n a�o 2007.txt" el resultado es imprevisible ( por el uso de los acentos y la � )

Gracias por la ayuda
Fran

Reply by email

Javier Villarroya
to franmate en gmail.com

El 08/01/2010 14:25, franmate en gmail.com escribi�:

Show quoted text 5 lines
Hola Buen a�o a todos y todas. �Conoceis alguna forma de saber si el sistema operativo sobre el que corre una aplicaci�n es unicode?

No, aunque puedes usar UFT8ToSys de la unit FileUtil, imagino que urgando por el codigo sacaras lo del CHARSET.

Show quoted text 7 lines
He mirado en lazarus.freepascal.org y no encuentro nada, tambi�n lo intent� con las variables de entorno, pero nada. Necesito saber el CHARSET del sistema . �El motivo?, si un usuario guarda los datos con el nombre "sesi�n a�o 2007.txt" el resultado es imprevisible ( por el uso de los acentos y la � )

Te entiendo perfectamente ;)

Show quoted text 8 lines
Gracias por la ayuda Fran _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

JoshyFun
to franmate en gmail.com: Hola Buen a�o a todos y todas. �Conoceis alguna forma de saber si el sistema…

Hello franmate,

Friday, January 8, 2010, 2:25:09 PM, you wrote:

fgc> �Conoceis alguna forma de saber si el sistema operativo sobre el que fgc> corre una aplicaci�n es unicode?
fgc> He mirado en lazarus.freepascal.org y no encuentro nada, tambi�n lo fgc> intent� con las variables de entorno, pero nada. fgc> Necesito saber el CHARSET del sistema .
fgc> �El motivo?, si un usuario guarda los datos con el nombre "sesi�n a�o fgc> 2007.txt" el resultado es imprevisible ( por el uso de los acentos y fgc> la � )

� Entorno Windows ?

� Por qu� el resultado es imprevisible ? Ten en cuenta que FPC y por lo tanto Lazarus en el manejo de ficheros es ANSI, por lo tanto que el S.O. sea unicode o no es indiferente, simplemente por que no puedes acceder a ficheros con nombres unicode fuera de la p�gina de c�digos actual. Lo cual tampoco suele ser un problema a menos que los ficheros se generen en un pais para ser leidos en otro.

Best regards, JoshyFun

Reply by email

franmate en gmail.com
to JoshyFun

Hello JoshyFun y hola Javier.

El entorno es windows , Mac y linux

Supongamos que el usuario quiere guardar el archivo como "a�o" , en linux aparece un fichero llamado "a�o.xml" , perfecto. Pero en windows es "año.xml" , para evitarlo tengo que hacer utf8ansi o utf8sys , pero s�lo en windows.

La soluci�n la encontr� en este hilo de mensajes: http://www.mail-archive.com/lazarus en miraclec.com/msg11687.html , y es ....

{$ifdef WindowsUnicodeSupport}
{$endif}

M�s sobre unicode y sus "problemas" ( entre comillas ) http://wiki.freepascal.org/LCL_Unicode_Support/es

Gracias a todos por la respuesta
Fran Mac�as

Show quoted text 20 lines
fgc> �Conoceis alguna forma de saber si el sistema operativo sobre el que fgc> corre una aplicaci�n es unicode? fgc> He mirado en lazarus.freepascal.org y no encuentro nada, tambi�n lo fgc> intent� con las variables de entorno, pero nada. fgc> Necesito saber el CHARSET del sistema . fgc> �El motivo?, si un usuario guarda los datos con el nombre "sesi�n a�o fgc> 2007.txt" el resultado es imprevisible ( por el uso de los acentos y fgc> la � ) � Entorno Windows ? � Por qu� el resultado es imprevisible ? Ten en cuenta que FPC y por lo tanto Lazarus en el manejo de ficheros es ANSI, por lo tanto que el S.O. sea unicode o no es indiferente, simplemente por que no puedes acceder a ficheros con nombres unicode fuera de la p�gina de c�digos actual. Lo cual tampoco suele ser un problema a menos que los ficheros se generen en un pais para ser leidos en otro. --

Reply by email

JoshyFun
to franmate en gmail.com

Hello franmate,

Saturday, January 9, 2010, 4:05:22 AM, you wrote:

fgc> El entorno es windows , Mac y linux
fgc> Supongamos que el usuario quiere guardar el archivo como "a�o" , en fgc> linux aparece un fichero llamado "a�o.xml" , perfecto. Pero en windows fgc> es "año.xml" , para evitarlo tengo que hacer utf8ansi o utf8sys , fgc> pero s�lo en windows.

No, no... Eso te pasar� en Linux si tu sistema est� configurado como UTF-8, si no es as� har� una cosa totalmente distinta. En los tres sistemas operativos tienes que hacer el UTF8ToAnsi, si el sistema es un Linux en UTF-8 el UTF8ToAnsi simplemente no har� nada de nada.

De hecho para una compatibilidad futura cuando FPC soporte Unicode en las entradas y salidas de ficheros es mejor que uses UTF8ToSys ya que si no me equivoco esta funci�n no har� nada cuando la entrada salida de datos sea unicode siempre que el sistema operativo sea Unicode tambi�n.

fgc> La soluci�n la encontr� en este hilo de mensajes: fgc> http://www.mail-archive.com/lazarus en miraclec.com/msg11687.html , y es fgc> ....
fgc> {$ifdef WindowsUnicodeSupport}
fgc> {$endif}

Esto es para determinar si Lazarus se debe de construir con soporte Unicode o no, digamos que eso de un dia a otro desaparecer� ya que el comportamiento de Lazarus es homogeneo tanto si el sistema operativo por debajo soporta Unicode como si no.

Best regards, JoshyFun

Reply by email

franmate en gmail.com
to JoshyFun

Gracias de nuevo por la ayuda,

Show quoted text 11 lines
fgc> La soluci�n la encontr� en este hilo de mensajes: fgc> http://www.mail-archive.com/lazarus en miraclec.com/msg11687.html , y es fgc> .... fgc> {$ifdef WindowsUnicodeSupport} fgc> {$endif} Esto es para determinar si Lazarus se debe de construir con soporte Unicode o no, digamos que eso de un dia a otro desaparecer� ya que el comportamiento de Lazarus es homogeneo tanto si el sistema operativo por debajo soporta Unicode como si no.

Efectivamente, non funciona como yo esperaba y no sirvi�.

Lo que hago en este momento es utilizar una variable boolean ( esansi ) y la pongo a true si es windows, de esta forma todo funciona bien en linux-ubuntu y windows, pero tengo que cambiar el valor antes de cada compilaci�n ( lo que no se deber�a hacer en lazarus: "escribe una vez, compila donde quieras" ) , el problema aparecer� si el usuario utiliza un linux ansi o si windows cambia a UTF-8
Utilizo utf8toansi y ansitoutf8, no acabo de familiarizarme con utf8tosys y systoutf8

La aplicaci�n tambi�n genera un zip , y aqu� las cosas empeoran . Con zipper ( bajado de svn ) perfecto en linux, pero en windows vuelven los caracteres extra�os con acentos y �.

Haciendo pruebas en chino ( copi� unos caracteres en chino de la web ), con linux perfecto, pero en windows nada de nada . Esto no tiene que ver con lazarus, es un problema de windows, pero es un comentario para afirmar las posibilidades de linux.

Reply by email

JoshyFun
to franmate en gmail.com

Hello franmate,

you wrote
> Esto es para determinar si Lazarus se debe de construir con soporte > Unicode o no, digamos que eso de un dia a otro desaparecer� ya que el > comportamiento de Lazarus es homogeneo tanto si el sistema operativo > por debajo soporta Unicode como si no.

fgc> Lo que hago en este momento es utilizar una variable boolean ( esansi fgc> ) y la pongo a true si es windows, de esta forma todo funciona bien en fgc> linux-ubuntu y windows, pero tengo que cambiar el valor antes de cada fgc> compilaci�n ( lo que no se deber�a hacer en lazarus: "escribe una vez, fgc> compila donde quieras" ) , el problema aparecer� si el usuario utiliza fgc> un linux ansi o si windows cambia a UTF-8
fgc> Utilizo utf8toansi y ansitoutf8, no acabo de familiarizarme con fgc> utf8tosys y systoutf8

El problema viene por lo que crees que significa "UTF8ToAnsi", no significa "UTF8ToPageCode", vamos que no convierte los caracteres que tengas a una p�gina de c�digos, si no UTF8 al juego de caracteres que usa el sistema operativo anfitri�n.

De este modo tomando un Linux configurado como UTF8 (1), otro configurado para ISO8859-1 (2) y cualquier Windows (95,98,XP...) y que est� configurado en Espa�ol de Espa�a (3):

1) UTF8ToAnsi = UTF8ToUTF8
2) UTF8ToAnsi = UTF8ToISO8859-1
3) UTF8ToAnsi = UTF8ToWin1252

fgc> La aplicaci�n tambi�n genera un zip , y aqu� las cosas empeoran . Con fgc> zipper ( bajado de svn ) perfecto en linux, pero en windows vuelven fgc> los caracteres extra�os con acentos y �.

El formato ZIP normal no soporta Unicode de ning�n tipo, no existe un modo standard de pasar un ZIP comprimido en Rusia con nombres cir�licos a Espa�a por ejemplo. Si creas los nombres de ficheros con UTF8 se mostrar�n bien en un Linux UTF8 pero mal en Windows. Por decirlo de otro modo los nombres s�lo se recuperar�n correctamente si se escriben en ASCII<127 o si se recuperan en el mismo sistema en el que han sido comprimidos usando UTF8ToAnsi.

fgc> Haciendo pruebas en chino ( copi� unos caracteres en chino de la web fgc> ), con linux perfecto, pero en windows nada de nada . Esto no tiene fgc> que ver con lazarus, es un problema de windows, pero es un comentario

No es una limitaci�n de Windows, es una limitaci�n actual del RTL de FreePascal. En Windows tendr�s problemas para mostrar caracteres en chino si no tienes una fuente unicode completa que soporte los caracteres chinos (por defecto creo que no hay ninguna, puedes instalar Arial Unicode).

La limitaci�n de FreePascal en Windows me imagino que ser� subsanada "en breve" con el soporte de las nuevas variables de cadena Unicode nativas y cargando din�micamente las versiones "W" de las API necesarias.

fgc> para afirmar las posibilidades de linux.

A este nivel las posibilidades de ambos son muy similares, s�lo que Linux mayormente ha tomado el camino del UTF8 mientras que Windows desde 2000 en adelante ha tomado el camino del UTF-16BE. No son ni mejores ni peores, simplemente diferentes aunque no mucho. Otra cosa son las in-"utilidades" que acompa�an el kernel de Windows que con el unicode, sea el que sea, suelen pasarlo muy mal, desde el explorador de ficheros al omnipresente CMD.EXE que para poco m�s vale que para borrar un archivo...

Best regards, JoshyFun

Reply by email

franmate en gmail.com
to JoshyFun

Muchas gracias por la explicaci�n , ha sido todo muy educativo y expresado con claridad.

Consegu� que funcionara todo bien, tanto en windows como en linux , excepto la creaci�n del ZIP . Pero siguiendo lo que comentas restring� los caracteres de los nombres de ficheros, sean o no para el ZIP a ASCII<127, de forma que si el usuario escribe a�o.xml , el sistema lo guarda como an_o.xml , como el trabajo est� orientado a producir archivos para internet, as� tambi�n aprenden a evitar � y tildes. S� que parece muy agresivo pero no puedo hacerlo mejor :-( Tambi�n si escriben " a�o 2007.xml" cambia a "an_o_2007.xml", es decir sustituye los espacios.

He puesto unos ejemplos de la utilidad del programa: http://chiscos.net/interactivas/santiago/santiago.html http://chiscos.net/interactivas/osos/radio.html
http://chiscos.net/interactivas/kitchen/kitchen.html

Y si quereis ver el ejecutable: http://chiscos.net/interactivas/iieditor_10.zip

Yo s�lo me dedico a �sto por el af�n de crear herramientas para la educaci�n, no soy profesional de la inform�tica.

De nuevo gracias

El d�a 9 de enero de 2010 20:25, JoshyFun <joshyfun en gmail.com> escribi�:

Show quoted text 78 lines
Hello franmate, Saturday, January 9, 2010, 7:37:51 PM, you wrote: >> Esto es para determinar si Lazarus se debe de construir con soporte >> Unicode o no, digamos que eso de un dia a otro desaparecer� ya que el >> comportamiento de Lazarus es homogeneo tanto si el sistema operativo >> por debajo soporta Unicode como si no. fgc> Lo que hago en este momento es utilizar una variable boolean ( esansi fgc> ) y la pongo a true si es windows, de esta forma todo funciona bien en fgc> linux-ubuntu y windows, pero tengo que cambiar el valor antes de cada fgc> compilaci�n ( lo que no se deber�a hacer en lazarus: "escribe una vez, fgc> compila donde quieras" ) , el problema aparecer� si el usuario utiliza fgc> un linux ansi o si windows cambia a UTF-8 fgc> Utilizo utf8toansi y ansitoutf8, no acabo de familiarizarme con fgc> utf8tosys y systoutf8 El problema viene por lo que crees que significa "UTF8ToAnsi", no significa "UTF8ToPageCode", vamos que no convierte los caracteres que tengas a una p�gina de c�digos, si no UTF8 al juego de caracteres que usa el sistema operativo anfitri�n. De este modo tomando un Linux configurado como UTF8 (1), otro configurado para ISO8859-1 (2) y cualquier Windows (95,98,XP...) y que est� configurado en Espa�ol de Espa�a (3): 1) UTF8ToAnsi = UTF8ToUTF8 2) UTF8ToAnsi = UTF8ToISO8859-1 3) UTF8ToAnsi = UTF8ToWin1252 fgc> La aplicaci�n tambi�n genera un zip , y aqu� las cosas empeoran . Con fgc> zipper ( bajado de svn ) perfecto en linux, pero en windows vuelven fgc> los caracteres extra�os con acentos y �. El formato ZIP normal no soporta Unicode de ning�n tipo, no existe un modo standard de pasar un ZIP comprimido en Rusia con nombres cir�licos a Espa�a por ejemplo. Si creas los nombres de ficheros con UTF8 se mostrar�n bien en un Linux UTF8 pero mal en Windows. Por decirlo de otro modo los nombres s�lo se recuperar�n correctamente si se escriben en ASCII<127 o si se recuperan en el mismo sistema en el que han sido comprimidos usando UTF8ToAnsi. fgc> Haciendo pruebas en chino �( copi� unos caracteres en chino de la web fgc> ), con linux perfecto, pero en windows nada de nada . Esto no tiene fgc> que ver con lazarus, es un problema de windows, pero es un comentario No es una limitaci�n de Windows, es una limitaci�n actual del RTL de FreePascal. En Windows tendr�s problemas para mostrar caracteres en chino si no tienes una fuente unicode completa que soporte los caracteres chinos (por defecto creo que no hay ninguna, puedes instalar Arial Unicode). La limitaci�n de FreePascal en Windows me imagino que ser� subsanada "en breve" con el soporte de las nuevas variables de cadena Unicode nativas y cargando din�micamente las versiones "W" de las API necesarias. fgc> para afirmar las posibilidades de linux. A este nivel las posibilidades de ambos son muy similares, s�lo que Linux mayormente ha tomado el camino del UTF8 mientras que Windows desde 2000 en adelante ha tomado el camino del UTF-16BE. No son ni mejores ni peores, simplemente diferentes aunque no mucho. Otra cosa son las in-"utilidades" que acompa�an el kernel de Windows que con el unicode, sea el que sea, suelen pasarlo muy mal, desde el explorador de ficheros al omnipresente CMD.EXE que para poco m�s vale que para borrar un archivo... -- Best regards, �JoshyFun _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

JoshyFun
to franmate en gmail.com

Hello franmate,

Sunday, January 10, 2010, 6:40:48 AM, you wrote:

fgc> Muchas gracias por la explicaci�n , ha sido todo muy educativo y fgc> expresado con claridad.

Un placer :)

fgc> Consegu� que funcionara todo bien, tanto en windows como en linux , fgc> excepto la creaci�n del ZIP . Pero siguiendo lo que comentas restring� fgc> los caracteres de los nombres de ficheros, sean o no para el ZIP a fgc> ASCII<127, de forma que si el usuario escribe a�o.xml , el sistema lo fgc> guarda como an_o.xml , como el trabajo est� orientado a producir fgc> archivos para internet, as� tambi�n aprenden a evitar � y tildes. S� fgc> que parece muy agresivo pero no puedo hacerlo mejor :-( fgc> Tambi�n si escriben " a�o 2007.xml" cambia a "an_o_2007.xml", es decir fgc> sustituye los espacios.

He investigado un poco m�s lo de los ZIP (Para una especie de zipper que estoy haciendo) y por defecto los programas deben asumir ISO8859-1 para los nombres de fichero en un ZIP, esto cubre al 99% am�rica y europa y s�lo fallar�n algunos caracteres como puede ser el "�".

Por lo tanto deber�a ser seguro hacer UTF8ToISO88591 (debes de incluir la unit "lclconv" (si no recuerdo mal el nombre). Una vez convertido el nombre a ISO88591 deber�s revisar el nombre para eliminar todos los posibles '?' que haya (caracteres que no han podido ser convertidos).

Si te interesa voy a preparar una funci�n que haga todo eso para mi c�digo, as� que cuando la termine te la pego en un mensaje (si la quieres claro).

fgc> He puesto unos ejemplos de la utilidad del programa: fgc> http://chiscos.net/interactivas/santiago/santiago.html

Jajajaja, no me digas que eres de Santiago de Compostela, por que si es as� el mundo es muyyyyy peque�o :)

Best regards, JoshyFun

Reply by email

franmate en gmail.com
to JoshyFun

Gracias,

Por lo tanto deber�a ser seguro hacer UTF8ToISO88591 (debes de incluir la unit "lclconv" (si no recuerdo mal el nombre). Una vez convertido el nombre a ISO88591 deber�s revisar el nombre para eliminar todos los posibles '?' que haya (caracteres que no han podido ser convertidos).

Har� unas pruebas con la funci�n UTF8ToISO_8859_1 de la unit LConvEncoding , a ver que sale.
Cuando tengas ese c�digo s� que me gustar�a aprender de �l.

Jajajaja, no me digas que eres de Santiago de Compostela, por que si es as� el mundo es muyyyyy peque�o :)

De Santiago de Compostela, no , del norte , del Ortegal.

Best regards, �JoshyFun

Hasta la pr�xima
Fran Mac�as

Reply by email