2012-10-02 41 views
9

Primero - ¡me disculpo si esto ha sido respondido cientos de veces! D'oh!¿Los archivos de recursos están compilados como UNICODE o ANSI code-page?

Pero mi búsqueda chupa-fu parecer, ya que estoy teniendo suerte responder a esta pregunta básica:

cómo se almacenan los recursos en el EXE/DLL? Como UNICODE (UCS-2, formato de caracteres interno nativo de Windows), o como caracteres multibyte que utilizan la página de códigos del bloque de recursos?

  • ¿Cómo cuerdas uno embed Unicode en los propios recursos (.rc)?
  • ¿Se puede insertar texto UNICODE (UCS-2) en las cadenas de idioma desde VS 2012?
  • ¿Windows todavía está usando UCS-2, o está utilizando UTF16 internamente?

Estoy buscando respuestas generales, o enlaces a detalles, en lugar de un procedimiento detallado para poner una cadena UNICODE en una tabla de cadenas .rc. ¡Gracias!

+2

Esto no está directamente relacionado con su pregunta, pero desde Windows 2000 el formato de carácter interno de Windows ha sido UTF-16. Las diferencias entre UTF-16 y UCS-2 son pocas, pero existen. – kusma

Respuesta

7

Todas las cadenas de recursos en WIN32 se compilan como Unicode. Ver here para más información. La secuencia de comandos .rc en sí misma puede ser ANSI (utilizando la página de códigos local) o UCS-2 con la lista de materiales apropiada (reference).

+0

La secuencia de comandos RC también puede ser UCS-2. – Deanna

+0

Gracias por la edición, Deanna. Estaba a punto de pegar eso. – WhozCraig

+0

Así que, en resumen, no importa si el proyecto EXE/DLL está configurado en MBCS o UNICODE - los recursos binarios dentro de EXE/DLL están en UNICODE para cosas como diálogos, cadenas tablas, y así sucesivamente? – Mordachai

3

En caso de duda, eche un vistazo al hex. Aquí el inicio del archivo rc del Bloc de notas, en UTF16:

0002ed60 01 00 53 00 74 00 72 00 69 00 6e 00 67 00 46 00 |..S.t.r.i.n.g.F.| 
0002ed70 69 00 6c 00 65 00 49 00 6e 00 66 00 6f 00 00 00 |i.l.e.I.n.f.o...| 
0002ed80 a6 02 00 00 01 00 30 00 34 00 30 00 39 00 30 00 |......0.4.0.9.0.| 
0002ed90 34 00 42 00 30 00 00 00 4c 00 16 00 01 00 43 00 |4.B.0...L.....C.| 
0002eda0 6f 00 6d 00 70 00 61 00 6e 00 79 00 4e 00 61 00 |o.m.p.a.n.y.N.a.| 
0002edb0 6d 00 65 00 00 00 00 00 4d 00 69 00 63 00 72 00 |m.e.....M.i.c.r.| 
0002edc0 6f 00 73 00 6f 00 66 00 74 00 20 00 43 00 6f 00 |o.s.o.f.t. .C.o.| 
0002edd0 72 00 70 00 6f 00 72 00 61 00 74 00 69 00 6f 00 |r.p.o.r.a.t.i.o.| 
+0

Esto no responde la pregunta. La pregunta es si los caracteres Unicode pueden colocarse en un archivo .rc. No puede responder eso mirando ** la salida ** del compilador de recursos. Además, nada en el hexdump identifica a UTF-16. Esto también podría ser UCS-2. – IInspectable

Cuestiones relacionadas