2011-10-04 6 views
7

¿Cómo puedo encontrar el juego de caracteres de la configuración regional actual en C?¿Obtiene el juego de caracteres de la configuración regional actual en C?

setlocale (LC_ALL, NULL) devuelve "en_US.UTF8", pero ¿hay alguna manera de obtener el juego de caracteres? En /etc/locale.gen en mi sistema, enumera las configuraciones regionales y los conjuntos de caracteres, por lo que no está en el nombre.

Respuesta

6

Puede consultar diversos parámetros de la configuración regional actual utilizando la función nl_langinfo(3). El juego de caracteres se obtiene llamando al nl_langinfo(CODESET).

Tenga en cuenta que debe llamar al setlocale antes de usar nl_langinfo para hacer que su programa reconozca la configuración regional.

+0

¿Conoces una forma de hacer esto en Windows? – Jookia

+0

@Jookia: Diría que simplemente define UNICODE y usa las API 'wchar_t' para todo en Windows. La búsqueda rápida en MSDN sugiere buscar la función '_getmbcp' para obtener la codificación (tenga en cuenta que Windows usa los códigos numéricos de las codificaciones), pero úselo solo para interpretar archivos de texto heredados. –

+0

Las API wchar_t son UTF-16, ¿es seguro asumir que debería simplemente lanzar texto UTF-16 en Windows? – Jookia

Cuestiones relacionadas