Aracılığıyla paylaş


Uluslararası Etkinleştirme

Çoğu geleneksel C ve C++ kodu, uluslararası uygulamalar için iyi çalışmayan karakter ve dize işleme hakkında varsayımlarda bulunur. Hem MFC hem de çalışma zamanı kitaplığı Unicode veya MBCS'yi desteklese de, yine de yapmanız gereken işler vardır. Bu bölümde size yol göstermek için Visual C++'da "uluslararası etkinleştirme" ifadesinin anlamı açıklanmaktadır:

  • Hem Unicode hem de MBCS, MFC işlev parametre listelerindeki taşınabilir veri türleri ve dönüş türleri yoluyla etkinleştirilir. Bu türler, derlemenizin simgeyi mi yoksa simgeyi _UNICODE_MBCS mi (DBCS anlamına gelir) tanımlayıp tanımlamadığına bağlı olarak uygun yollarla koşullu olarak tanımlanır. MFC kitaplıklarının farklı varyantları, derlemenizin tanımladığı bu iki simgeden hangisine bağlı olarak uygulamanıza otomatik olarak bağlanır.

  • Sınıf kitaplığı kodu, doğru Unicode veya MBCS davranışını sağlamak için taşınabilir çalışma zamanı işlevlerini ve diğer araçları kullanır.

  • Yine de kodunuzda belirli türlerdeki uluslararasılaştırma görevlerini işlemeniz gerekir:

    • MFC'yi her iki ortamda da taşınabilir hale getiren taşınabilir çalışma zamanı işlevlerini kullanın.

    • Makroyu kullanarak _T değişmez dizeleri ve karakterleri her iki ortamda da taşınabilir hale getirin. Daha fazla bilgi için bkz . tchar.h'de Genel Metin Eşlemeleri.

    • MBCS altında dizeleri ayrıştırırken önlemler alın. Bu önlemler Unicode altında gerekli değildir. Daha fazla bilgi için bkz . MBCS Programlama İpuçları.

    • Uygulamanızda ANSI (8 bit) ve Unicode (16 bit) karakterleri karıştırıp karıştırmadığınıza dikkat edin. AnSI karakterlerini programınızın bazı bölümlerinde, Unicode karakterlerini de bazılarında kullanmak mümkündür, ancak bunları aynı dizede karıştıramazsınız.

    • Uygulamanızda dizeleri sabit kodlamayın. Bunun yerine, uygulamanın .rc dosyasına ekleyerek STRINGTABLE kaynakları oluşturun. Uygulamanız daha sonra kaynak kodunda değişiklik veya yeniden derleme gerektirmeden yerelleştirilebilir. STRINGTABLE kaynakları hakkında daha fazla bilgi için bkz . Dize Düzenleyicisi.

Not

Avrupa ve MBCS karakter kümelerinin aksanlı harfler gibi bazı karakterleri ve 0x80'den büyük karakter kodları vardır. Çoğu kod imzalı karakterler kullandığından, 0x80'den büyük olan bu karakterler' e intdönüştürüldüğünde imza genişletilir. İşaretle genişletilmiş karakterler negatif olduğundan, dizinin dışında dizin oluşturması nedeniyle bu, dizi dizini oluşturmayla ilgili bir sorundur. Japonca gibi MBCS kullanan diller de benzersizdir. Bir karakter 1 veya 2 bayt olabileceğinden, her zaman her iki baytı da aynı anda işlemeniz gerekir.

Ayrıca bkz.

Unicode ve MBCS
Uluslararası Duruma Getirme Stratejileri