Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: fiero en 06 de Abril de 2006, 05:45:39 AM

Título: Caracteres Rusos En Las Rutas De Archivo
Publicado por: fiero en 06 de Abril de 2006, 05:45:39 AM
 Me comentan por ahí que mi programa no funciona cuando alguna carpeta de la ruta del archivo a cargar contiene caracteres rusos. Imagino que les pasará lo mismo a los griegos o a los japoneses.

¿Cómo se soluciona esto? ¿Compilando el programa en UNICODE?

un saludo
Título: Caracteres Rusos En Las Rutas De Archivo
Publicado por: CoLSoN2 en 06 de Abril de 2006, 07:25:29 AM
 No creo que eso te solucione nada.. lo suyo sería que hicieras tu mismo la prueba con una versión del OS en tal idioma y vieras dónde peta. Qué tipo de codificación usas para los strings? Si son simples char*s de 8-bits no me extraña que tengas este tipo de problemas.
Título: Caracteres Rusos En Las Rutas De Archivo
Publicado por: fiero en 06 de Abril de 2006, 09:16:34 AM
 Sí, utilizo char* de 8 bits de toda la vida. Que yo sepa sólo existen las cadenas de 8 bits y las cadenas Unicode de 16 bits por caracter. ¿Qué tipos más hay?

La verdad es que he visto páginas en japonés funcionando perfectamente (creo que el japonés utiliza 2 bytes por caracter). Incluso el programa saca tooltips en japonés y esas cadenas internamente las trato como char*.

Título: Caracteres Rusos En Las Rutas De Archivo
Publicado por: CoLSoN2 en 06 de Abril de 2006, 09:25:05 AM
 A parte de usar cadenas ASCII (256 caracteres) y Unicode, puedes utilizar UTF-8 que es lo que uso yo. Son cadenas de 8 bits, y puedes utilizar char* o std::string. La diferencia es que del 0 al 127 son los mismos códigos que el ASCII pero luego, son caracteres de dos bytes. Así que si no utilizas caracteres "raros" (ñ, ruso, griego, etc.) tendrás cadenas iguales a las ASCII, pero a partir de ahí, el tratamiento de cadenas se complica porque ya no es siempre 1 caracter = 1 byte.

Yo la verdad es que no estoy muy puesto en el tema, porque tanto std::string como tinyXML soportan UTF-8 por defecto, y para PTK hay un tio que ha modificado la clase KText para soportar UTF-8, así que realmente, con guardar los .XML con codificación UTF-8 y no hacer cosas raras con los strings, lo tengo todo hecho.