, dize yürütme karakteri kodlanmış edilecektir platformunun ayarlayın. Yürütme karakter kümesi UTF-8 (birkaç platformda varsayılan olan) olabilir, ancak her zaman UTF-8 olarak kabul edilemez (bkz. this answer).
Yürütme karakter kümesi, bir evrensel karakter adı (veya söz dizimi içinde başka bir değer) kodlayamazsa, sonuç uygulama tanımlıdır (yani, bir hataya veya bazı sentinel değerine neden olabilir). -fexec-charset=ascii
ile GCC 5.3 kullanarak derlenmiş zaman
const char* c = "\u00a7";
, bu hata ile başarısız: U + 00A7 ASCII kodlanmış edilemez çünkü
error: converting UCN to execution character set: Invalid or incomplete multibyte or wide character
budur Örneğin, kod düşünün. bayt 0xC2
0xA7
0x00
puan
const char* c = u8"\u00A7";
Derleme başarılı ve c
: Bununla birlikte, u8
öneki kullanılarak. Eğer u8
önek kullanırsanız
, dize bakılmaksızın platformun konfigürasyonu, UTF-8 kodlu olması garantili.