GCC 4.7 Codificación de caracteres de origen y codificación de caracteres de ejecución para literales de cadena?

2 minutos de lectura

avatar de usuario
Andrés Tomazos

¿Tiene GCC 4.7 en Linux/x86_64 una codificación de caracteres predeterminada mediante la cual valida y decodifica el contenido de cadenas literales en archivos fuente C? ¿Es esto configurable?

Además, al vincular los datos de cadena de los literales de cadena en la sección de datos de la salida, ¿tiene una codificación de caracteres de ejecución predeterminada? ¿Es esto configurable?

En cualquier configuración, ¿es posible tener una codificación de caracteres de origen que difiera de la codificación de caracteres de ejecución? (Es decir, ¿gcc alguna vez transcodificará entre codificaciones de caracteres?)

avatar de usuario
Christian Stieber

No sé qué tan bien funcionan realmente estas opciones (sin usarlas atm; todavía prefiero tratar los literales de cadena como ‘solo ASCII’, ya que las cadenas localizadas provienen de archivos externos de todos modos, por lo que se trata principalmente de cadenas de formato o nombres de archivo), pero han agregado opciones como

-fexec-charset=charset
Set the execution character set, used for string and character constants. The default
is UTF-8. charset can be any encoding supported by the system's iconv library routine. 

-fwide-exec-charset=charset
Set the wide execution character set, used for wide string and character constants.
The default is UTF-32 or UTF-16, whichever corresponds to the width of wchar_t. As
with -fexec-charset, charset can be any encoding supported by the system's iconv
library routine; however, you will have problems with encodings that do not fit
exactly in wchar_t.

-finput-charset=charset
Set the input character set, used for translation from the character set of the
input file to the source character set used by GCC. If the locale does not specify,
or GCC cannot get this information from the locale, the default is UTF-8. This can
be overridden by either the locale or this command line option. Currently the command
line option takes precedence if there's a conflict. charset can be any encoding
supported by the system's iconv library routine. 

  • Me pregunto si cuando la codificación src y exec es UTF-8 predeterminada, en realidad valida el literal de cadena como UTF-8 bien formado y genera un error si contiene secuencias de bytes no válidas, o si simplemente deja pasar los bytes no válidos. .

    – Andrés Tomazos

    1 de septiembre de 2012 a las 1:18

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad