2012-08-31 14 views
9

¿Tiene GCC 4.7 en Linux/x86_64 una codificación de caracteres predeterminada mediante la cual valida y decodifica los contenidos de los literales de cadenas en los archivos fuente C? ¿Es esto configurable?GCC 4.7 Codificación de caracteres de origen y codificación de caracteres de ejecución para literales de cadena?

Además, al vincular los datos de cadena de 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 que gcc alguna vez transcodificará entre codificaciones de caracteres?)

Respuesta

11

No sé qué tan bien funcionan estas opciones (no las uso atm, prefiero tratar los literales de cadena como 'ASCII solamente', ya que las cadenas localizadas provienen de archivos externos de todos modos por lo que es en su mayoría cosas como las cadenas de formato o nombres de archivos), pero se han añadido 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. 
+0

me pregunto si cuando el src y codificación Exec es el UTF-8 por defecto, lo que realmente valida la cadena literal, así -formó UTF-8 y genera un error si contiene secuencias de bytes no válidas, o si simplemente deja pasar los bytes no válidos. –

Cuestiones relacionadas