Establecer el “locale” para una aplicación C/C++
Thursday, October 9th, 2008A veces puede ser conveniente establecer el “locale” de la manera adecuada en una aplicación.
Por ejemplo, si vamos a utilizar expresiones regulares con caracteres no-ASCII (como la ñ o los caracteres acentuados).
Para establecer el locale, podemos utilizar el código:
const char* locstr = setlocale(LC_ALL, "es_ES.UTF8");
if (locstr == NULL) {
printf("SETLOCALE ERROR!\n");
}
[Consultar API para setlocale.]
Si como ejemplo, buscamos la expresión regular “ñ” dentro de la cadena “este año es muy frío”, obtendremos un resultado diferente, dependiendo del locale definido:
- Si se ha definido el locale “es”:
start offset: 6 end offset: 8
- Si el locale es, por ejemplo, “us”:
start offset: 6 end offset: 7
Ya conocemos los problemas que presenta C/C++ para tratar caracteres unicode. Pero, al menos, podemos hacer búsquedas y sustituciones de una manera más fiable si el locale definido es el adecuado.