2009-09-14 17 views

cevap

9

, kendinizi bulundu kuralları kullanarak kodlama üretmek zorunda örneğin, here. Örneğin, Alman keskin s (ß, kod noktası 0xdf), 0xc3,0x9f kodlayan UTF8'e sahiptir. E-acute (é, kod noktası 0xe9), 0xc3,0xa9'luk bir UTF8 kodlamasına sahiptir.

Ve ile dizelerinde keyfi altıgen karakterleri koyabilirsiniz: Kullanmak bir C99 derleyicisi varsa

char *cv = "r\xc3\xa9sum\xc3\xa9"; 
char *sharpS = "\xc3\x9f"; 
+0

\ xHEX notasyonu, aradığım şey, teşekkürler. –

+0

Değişken, UTF-16'yı tutacak kadar genişse, \ x00e9 diyebilir misiniz? –

1

wchar_t'den Aradığınız türüdür söylemek istiyorum: UTF8 için http://opengroup.org/onlinepubs/007908799/xsh/wchar.h.html

+0

$ /usr/bin/gcc -std=c99 -pedantic -Wall wc.c

soruda unix etiketi olmadığı için. – paxdiablo

+0

AS ASCII metninde é işleminin nasıl yapıldığına daha çok ilgileniyorum, Perlimde "\ x {e9}" 'ifadesini kullanarak yapabilirim. Sorun, kaynağın ASCII olduğu, ancak UTF-8 karakterleri oluşturması gerektiğidir. –

+0

@Chas: Neden kaynak dosya kodlaması olarak bir UTF-8 kullanmıyorsunuz? Çoğu derleyicide, çokbaytlı diziler yalnızca dize değişmezlerinde olduğu sürece herhangi bir problem yaşanmamalı. – Christoph

5

<wchar.h> (ve <locale.h>) ve Unicode kodunu girin doğrudan kaynakta puan. Sadece bir * UNIX * Spec (SUS), ben sadece getirmek, ISO C değil parçası olduğunu akılda tutmak

$ cat wc.c

#include <locale.h> 
#include <stdio.h> 
#include <wchar.h> 

int main(void) { 
    const wchar_t *name = L"r\u00e9sum\u00e9"; 
    setlocale(LC_CTYPE, "en_US.UTF-8"); 
    wprintf(L"name is %ls\n", name); 
    return 0; 
} 

$ ./a.out

name is résumé 
+0

Yukarıdaki kod işe yararken, wchar_t öğesinin aynı anda birden çok yerel yeri temsil edemediğinden bahsetmek son derece önemlidir. Sadece mevcut yerel ayarı destekleyecek kadar geniş olmalıdır. –

İlgili konular