2012-10-02 3 views
9

Prima - mi scuso se questo è stato risolto centinaia di volte! D'oh!I file di risorse sono compilati come UNICODE o ANSI code-page?

Ma la mia ricerca-fu a quanto pare fa schifo, come sto avendo fortuna rispondere a questa domanda di fondo:

Come sono le risorse immagazzinate nella EXE/DLL? Come UNICODE (UCS-2, formato di carattere interno nativo di Windows) o come caratteri multibyte usando la code page del blocco delle risorse?

  • Come corde un'embed UNICODE nelle proprie risorse (RC)?
  • È possibile inserire il testo UNICODE (UCS-2) nelle stringhe della lingua da VS 2012?
  • Windows sta ancora utilizzando UCS-2 o usa UTF16 internamente?

Sto solo cercando risposte generali o collegamenti ai dettagli, piuttosto che una dettagliata procedura per inserire una stringa UNICODE in una tabella di stringhe .rc. Grazie!

+2

Questo non è direttamente correlato alla domanda, ma poiché Windows 2000 il formato di carattere interno di Windows è stato UTF-16. Le differenze tra UTF-16 e UCS-2 sono poche, ma esistono. – kusma

risposta

7

Tutte le stringhe di risorse in Win32 sono compilate come Unicode. Vedi here per maggiori informazioni. Lo script .rc stesso può essere ANSI (utilizzando la codepage locale) o UCS-2 con la BOM appropriata (reference).

+0

Lo script RC può essere anche UCS-2. – Deanna

+0

Grazie per la modifica, Deanna. Stavo per incollarlo. – WhozCraig

+0

Quindi, in fondo, non importa se il progetto EXE/DLL è impostato su MBCS o UNICODE - le risorse binarie all'interno dell'EXE/DLL sono in UNICODE per cose come finestre di dialogo, stringhe tavoli e così via? – Mordachai

3

In caso di dubbio, dare un'occhiata all'esagono. Ecco l'inizio del file rc di notepad.exe, in 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

Questo non risponde alla domanda. La domanda è, se i caratteri Unicode possono essere inseriti in un file .rc. Non è possibile rispondere a ciò osservando l'** output ** del compilatore di risorse. Inoltre, nulla nel dump esadecimale identifica UTF-16. Questo potrebbe essere UCS-2 altrettanto bene. – IInspectable

Problemi correlati