2016-04-08 16 views

cevap

3

, 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 0xC20xA70x00 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.

İlgili konular