Pregunta

Así que desea utilizar para establecer un SetThreadLocale hilos página de códigos a UTF8. Hasta ahora, he estado utilizando el segundo parámetro de macros de conversión de cadena atl como "cT2a (szBUF, CP_UTF8)" para hacer esto. Pero yo quiero ser capaz de establecer la página de códigos hilo una vez en el principio con SetThreadLocale () y nunca tiene que utilizar el segundo parámetro de la macro de conversión de nuevo.

¿Cómo se hace esto? SetThreadLocale no tomará un parámetro de página de códigos como CP_UTF8, sólo un LCID. ¿Qué parámetros debería ser la alimentación SetThreadLocale para lograr esto ??

Tenga en cuenta, no tengo ningún idioma en particular en mente. Las cadenas que recibo podrían ser japonés, coreano, Inglés Etc. Hasta el momento, estoy teniendo problemas con esta mezcla de cadenas cuando se especifiquen CP_UTF8 como el segundo parámetro de una macro de conversión. Usted puede preguntar "bueno, entonces ¿por qué no seguir utilizando el segundo parámetro". Respuesta "ya que puede ser fácilmente olvidada por los miembros del equipo de trabajo en el código. Sería bueno si acaba de trabajar correctamente con la versión 1 de parámetros por defecto de la macro de conversión."

¿Fue útil?

Solución

SetThreadLocale espera un identificador de idioma, pero UTF-8 no es un identificador de idioma - es una codificación Unicode. Uno de los propósitos de la identificación de la tierra es para indicar al sistema cómo tratar el texto ANSI en el rango de 128-255. Dado un lenguaje real, su página de código se utiliza cuando se trata de este tipo de personajes. UTF-8, Otoh, es una representación comprimida de texto Unicode. Con el fin de crear texto UTF-8, la entrada tiene que ser Unicode. Dadas texto ANSI, que simplemente no saber cómo convertir el rango superior de caracteres. Esta es la forma cuando se hace "manualmente", con el fin de convertir ANSI a UTF-8 tiene que usar primero MultiByteToWideChar con una página de códigos especificada, y sólo entonces se puede convertir la cadena Unicode resultante a UTF-8.

Ahora, de vuelta a su pregunta - Me gustaría ir por otro camino. Si los errores adicionales param página de códigos que mucho, hacer una macro que ocultarlo más o menos (o heredar la clase cT2a y tienen el segundo parámetro fijo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top