Udostępnij za pośrednictwem


Unicode i znaków wielobajtowych ustawić wsparcia (MBCS)

Na przykład, japońskim i chińskim, niektóre języki mają dużych zestawów.Do obsługi programowania na tych rynkach, klasy biblioteki MFC (Microsoft Foundation) jest włączona na dwa różne podejścia do obsługi dużych zestawach znaków:

  • Unicode

  • Zestawy znaków wielobajtowych (MBCS)

Obsługa MFC ciągów znaków Unicode

Biblioteka klas całego warunkowo jest włączona dla znaków i łańcuchów Unicode.W szczególności klasy CString jest włączone Unicode.

UAFXCW.LIB

UAFXCW.PDB

UAFXCWD.LIB

UAFXCWD.PDB

MFCxxU.LIB

MFCxxU.PDB

MFCxxU.DLL

MFCxxUD.LIB

MFCxxUD.PDB

MFCxxUD.DLL

MFCSxxU.LIB

MFCSxxU.PDB

MFCSxxUD.LIB

MFCSxxUD.PDB

MFCMxxU.LIB

MFCMxxU.PDB

MFCMxxU.DLL

MFCMxxUD.LIB

MFCMxxUD.PDB

MFCMxxUD.DLL

(xx oznacza numer wersji pliku; na przykład "80" oznacza wersji 8.0).

CStringjest oparta na TCHAR typu danych.Jeśli symbol _UNICODE jest zdefiniowany dla kompilacji programu, TCHAR jest zdefiniowany jako typ wchar_t, znak 16-bitowe, typ kodowania.W przeciwnym razie TCHAR jest zdefiniowana jako char, kodowania znaków 8-bitowych normalnego.Dlatego w Unicode CString składa się ze znaków 16-bitowych.Bez Unicode, składa się z znaki typu char.

Zakończenie Unicode programowania aplikacji, należy również:

  • Użyj _T makro warunkowo kod ciągi za przenośne Unicode.

  • Po przesunięciu ciągów należy zwrócić uwagę, czy argumenty funkcji wymagają długość w znakach lub długość w bajtach.Różnica jest ważne, jeśli używasz ciągów znaków Unicode.

  • Użyć wersji przenośne funkcje obsługi ciągów c czasu.

  • Następujące typy danych użyć znaków i znak wskaźniki:

    • TCHARJeżeli użyjesz char.

    • LPTSTRJeżeli użyjesz char*.

    • LPCTSTRJeżeli użyjesz const char*.CStringoperator zapewnia LPCTSTR do konwersji między CString i LPCTSTR.

CStringdostarcza również konstruktory Unicode świadomy, operatory przypisania i operatory porównania.

Pokrewnych informacji dotyczących programowania Unicode, zobacz Tematy Unicode.Run-Time Library Reference definiuje przenośne wersje wszystkie funkcje obsługi ciągów.Patrz kategoria internacjonalizacji.

Obsługa MFC ciągi MBCS

Biblioteka klas jest również włączona dla zestawów znaków wielobajtowych, ale tylko dla znaków dwubajtowych ustawia (DBCS).

W zestawie znaków wielobajtowych znak może być jeden lub dwa bajty szeroki.Szeroki dwa bajty, jego pierwszy bajt jest specjalne "bajtu" oznacza to wybrany z określonego zakresu, zależnie od kodu strony jest używany.Razem ołowiu i "trail bajtów" Określ unikatowy kodowania.

Jeśli symbol _MBCS jest zdefiniowany dla kompilacji programu typu TCHAR, na którym CString jest oparta, mapuje char.Użytkownik, aby określić które bajtów w CString są bajtów potencjalnego klienta, które są trail bajtów.Biblioteka uruchomieniowa c dostaw funkcje ułatwiające to ustalić.

W obszarze DBCS ciągu może zawierać wszystkie jednobajtowe znaki ANSI, wszystkie znaki dwubajtowe lub kombinacja tych dwóch.Możliwości te wymagają szczególną ostrożność podczas analizowania ciągów.Obejmuje to CString obiektów.

[!UWAGA]

Serializacji ciągu Unicode w MFC można odczytać ciągów znaków Unicode i MBCS niezależnie od tego, która wersja aplikacji, które są uruchomione.Pliki danych są przenośne między Unicode i MBCS wersji programu.

CStringFunkcje składowe używają wersji specjalne "tekst" funkcje c czasu, które wywołują lub używają funkcji obsługujących kodu Unicode.W związku z tym, na przykład jeśli CString zazwyczaj wywoływanie funkcji strcmp, wywołuje funkcję odpowiedni tekst rodzajowy _tcscmp zamiast.W zależności od sposobu symbole _MBCS i _UNICODE są zdefiniowane, _tcscmp mapy następująco:

_MBCSdefinicja

_mbscmp

_UNICODEdefinicja

wcscmp

Ani symbolu, definicja

strcmp

[!UWAGA]

Symbole _MBCS i _UNICODE wzajemnie się wykluczają.

Funkcja tekst rodzajowy mapowania dla wszystkich procedur obsługi ciągów czasu są omówione w C Run-Time Library Reference.W szczególności, zobacz Internacjonalizacji.

Podobnie CString metody są implementowane przy użyciu mapowania typu "rodzajowe" danych.To enable both MBCS and Unicode, MFC uses TCHAR for char, LPTSTR for char*, and LPCTSTR for const char*.Te zapewnienia prawidłowego mapowania MBCS lub Unicode.

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

Inne zasoby

Ciągi (ATL/MFC)