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
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.
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*.
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.