Aracılığıyla paylaş


Unicode ve Çok Baytlı Karakter Kümesi (MBCS) Desteği

Japonca ve Çince gibi bazı dillerde büyük karakter kümeleri vardır. Microsoft Foundation Sınıf Kitaplığı (MFC), bu pazarlarda programlamayı desteklemek için büyük karakter kümelerini işlemek için iki farklı yaklaşım sağlar:

  • Unicode, wchar_t tabanlı geniş karakterler ve UTF-16 olarak kodlanmış dizeler.

  • Çok Baytlı Karakter Kümeleri (MBCS), char yerel ayara özgü bir karakter kümesinde kodlanmış tek veya çift baytlı karakterler ve dizeler.

Not

Microsoft, tüm yeni geliştirmeler için MFC Unicode kitaplıklarını önerir.
MBCS kitaplıkları Visual Studio 2013 ve Visual Studio 2015'te kullanım dışı bırakıldı. Bu durum artık geçerli değildir.
Visual Studio 2017'den başlayarak, MBCS kitaplıkları artık kullanım dışı değildir ve kullanımdan kaldırma uyarıları oluşturmaz.

Unicode Dizeleri için MFC Desteği

MFC sınıf kitaplığının tamamı, UTF-16 olarak geniş karakterlerde depolanan Unicode karakterler ve dizeler için koşullu olarak etkinleştirilir. Özellikle, sınıfı CString Unicode etkindir.

Bu kitaplık, hata ayıklayıcısı ve DLL dosyaları MFC'de Unicode'un destekleniyor olması için kullanılır:

MFCsürümüU.LIB
MFCsürümUD. LİB
MFCMsürümüU.LIB
MFCMsürümUD. LİB
MFCSsürümüU.LIB
MFCSsürümUD. LİB
UAFXCW. LİB
UAFXCWD. LİB

MFCsürümüU.PDB
MFCsürümUD. PDB
MFCMsürümüU.PDB
MFCMsürümUD. PDB
MFCSsürümüU.PDB
MFCSsürümUD. PDB
UAFXCW. PDB
UAFXCWD. PDB

MFCsürümU.DLL
MFCsürümUD.DLL
MFCMsürümU.DLL
MFCMsürümUD.DLL

(sürüm , dosyanın sürüm numarasını temsil eder; örneğin, '140' sürüm 14.0 anlamına gelir.)

CString veri türünü temel alır TCHAR . Simge _UNICODE , programınızın bir derlemesi için tanımlanmışsa, TCHAR 16 bit karakter kodlama türü olarak wchar_ttanımlanır. Aksi takdirde, TCHAR normal 8 bit karakter kodlaması olarak chartanımlanır. Bu nedenle, Unicode CString altında 16 bit karakterden oluşur. Unicode olmadan, türünde charkarakterlerden oluşur.

Uygulamanızın Unicode programlamasını tamamlamak için şunları da yapmalısınız:

  • _T Sabit dizeleri Unicode'a taşınabilir olacak şekilde koşullu olarak kodlarken makroyu kullanın.

  • Dizeleri geçirirken, işlev bağımsız değişkenlerinin karakter cinsinden uzunluk mu yoksa bayt cinsinden uzunluk mu gerektirdiğine dikkat edin. Unicode dizeleri kullanıyorsanız fark önemlidir.

  • C çalışma zamanı dize işleme işlevlerinin taşınabilir sürümlerini kullanın.

  • Karakterler ve karakter işaretçileri için aşağıdaki veri türlerini kullanın:

    • kullanmak istediğiniz yeri kullanın TCHARchar.

    • kullanmak istediğiniz yeri kullanın LPTSTRchar*.

    • kullanmak istediğiniz yeri kullanın LPCTSTRconst char*. CStringve LPCTSTRarasında CString dönüştürmek için işlecini LPCTSTR sağlar.

CString ayrıca Unicode kullanan oluşturucular, atama işleçleri ve karşılaştırma işleçleri sağlar.

Çalışma Zamanı Kitaplığı Başvurusu, tüm dize işleme işlevlerinin taşınabilir sürümlerini tanımlar. Daha fazla bilgi için Uluslararasılaştırma kategorisine bakın.

MBCS Dizeleri için MFC Desteği

Sınıf kitaplığı çok baytlı karakter kümeleri için de etkinleştirilir, ancak yalnızca çift baytlık karakter kümeleri (DBCS) için etkinleştirilir.

Çok baytlı bir karakter kümesinde, bir karakter bir veya 2 bayt genişliğinde olabilir. 2 bayt genişliğindeyse, ilk bayt, kullanımda olan kod sayfasına bağlı olarak belirli bir aralıktan seçilen özel bir "kurşun bayt"tır. Birlikte alındığında, müşteri adayı ve "iz baytları" benzersiz bir karakter kodlaması belirtir.

Simge_MBCS, programınızın bir derlemesi için tanımlanmışsa, temel aldığı ve ile eşlenen CStringcharyazınTCHAR. Bir içindeki hangi baytların kurşun bayt CString olduğunu ve hangilerinin iz bayt olduğunu belirlemek size bağlıdır. C çalışma zamanı kitaplığı, bunu belirlemenize yardımcı olacak işlevler sağlar.

DBCS altında, belirli bir dize tüm tek baytlı ANSI karakterlerini, tüm çift baytlı karakterleri veya ikisinin birleşimini içerebilir. Bu olasılıklar dizeleri ayrıştırmada özel bir özen gerektirir. Buna nesneler de dahildir CString .

Not

MFC'de Unicode dize serileştirmesi, uygulamanın hangi sürümünü çalıştırdığınızdan bağımsız olarak hem Unicode hem de MBCS dizelerini okuyabilir. Veri dosyalarınız programınızın Unicode ve MBCS sürümleri arasında taşınabilir.

CString üye işlevleri çağırdıkları C çalışma zamanı işlevlerinin özel "genel metin" sürümlerini veya Unicode kullanan işlevleri kullanır. Bu nedenle, örneğin, bir CString işlev genellikle çağrısı strcmpyaparsa, bunun yerine ilgili genel metin işlevini _tcscmp çağırır. Simgelerin _MBCS ve _UNICODE tanımlanma şekline bağlı olarak, _tcscmp aşağıdaki gibi eşlenir:

Simgeler İşlev
_MBCS Tanımlanan _mbscmp
_UNICODE Tanımlanan wcscmp
Simge tanımlanmadı strcmp

Not

ve _UNICODE simgeleri _MBCS birbirini dışlar.

Tüm çalışma zamanı dize işleme yordamları için genel metin işlevi eşlemeleri C Çalışma Zamanı Kitaplığı Başvurusu'nda ele alınılmıştır. Liste için bkz . Uluslararasılaştırma.

Benzer şekilde, CString yöntemler genel veri türü eşlemeleri kullanılarak uygulanır. MFC hem MBCS'yi hem de Unicode'ı etkinleştirmek için*charcharveya wchar_tiçin LPTSTR veya wchar_t*için ve LPCTSTR için const wchar_t**const charkullanır.TCHAR Bunlar MBCS veya Unicode için doğru eşlemeleri sağlar.

Ayrıca bkz.

Dizeler (ATL/MFC)
Dize Düzenleme