Obsługa zestawów znaków wielobajtowych (zestawy MBCS)
Zestawy znaków wielobajtowych (MBCS) to starsze podejście do potrzeby obsługi zestawów znaków, takich jak japoński i chiński, które nie mogą być reprezentowane w jednym bajtzie. W przypadku tworzenia nowych rozwiązań należy użyć formatu Unicode dla wszystkich ciągów tekstowych, z wyjątkiem ciągów systemowych, które nie są widoczne dla użytkowników końcowych. MBCS to starsza technologia i nie jest zalecana do tworzenia nowych rozwiązań.
Najczęstszą implementacją MBCS jest zestawy znaków dwubajtowych (DBCS). Ogólnie rzecz biorąc, język Visual C++ i MFC w szczególności jest w pełni włączony dla usługi DBCS.
Aby uzyskać przykłady, zobacz pliki kodu źródłowego MFC.
W przypadku platform używanych na rynkach, których języki używają dużych zestawów znaków, najlepszą alternatywą dla unicode jest MBCS. MFC obsługuje MBCS przy użyciu międzynarodowych typów danych i funkcji czasu wykonywania języka C. Należy wykonać to samo w kodzie.
W mbCS znaki są kodowane w bajtach 1 lub 2. W ciągu 2 bajtów pierwszy lub główny bajt sygnały, że oba znaki i następujący bajt mają być interpretowane jako jeden znak. Pierwszy bajt pochodzi z zakresu kodów zarezerwowanych do użycia jako bajty ołowiu. Zakresy bajtów mogą prowadzić bajty zależą od używanej strony kodowej. Na przykład japońska strona kodowa 932 używa zakresu 0x81 przez 0x9F jako bajtów potencjalnych, ale koreańska strona kodowa 949 używa innego zakresu.
Rozważ wszystkie poniższe elementy w programowaniu MBCS.
Znaki MBCS w środowisku MBCS mogą być wyświetlane w ciągach, takich jak nazwy plików i katalogów.
Operacje edycji
Operacje edycji w aplikacjach MBCS powinny działać na znakach, a nie bajtach. Daszek nie powinien dzielić znaku, Strzałka w prawo powinien przenosić prawy znak itd. Usunięcie powinno spowodować usunięcie znaku; Cofnij powinno ponownie je odstawić.
Obsługa ciągów
W aplikacji korzystającej z MBCS obsługa ciągów stanowi specjalne problemy. Znaki obu szerokości są mieszane w jednym ciągu; dlatego należy pamiętać o sprawdzeniu pod kątem bajtów ołowiu.
Obsługa biblioteki czasu wykonywania
Biblioteka czasu wykonywania języka C i MFC obsługują programowanie jednobajtowe, MBCS i Unicode. Ciągi jednobajtowe są przetwarzane z rodziną str
funkcji czasu wykonywania, ciągi MBCS są przetwarzane z odpowiednimi _mbs
funkcjami, a ciągi Unicode są przetwarzane z odpowiednimi wcs
funkcjami. Implementacje funkcji składowych klasy MFC używają przenośnych funkcji czasu wykonywania mapowanych w odpowiednich okolicznościach do normalnej str
rodziny funkcji, funkcji MBCS lub funkcji Unicode, zgodnie z opisem w sekcji "Przenośność MBCS/Unicode".
Przenośność MBCS/Unicode
Za pomocą pliku nagłówka tchar.h można tworzyć aplikacje jednobajtowe, MBCS i Unicode z tych samych źródeł. Tchar.h definiuje makra poprzedzone _tcs, które są mapowane na str
funkcje , _mbs
lub wcs
zgodnie z potrzebami. Aby skompilować MBCS, zdefiniuj symbol _MBCS
. Aby skompilować kod Unicode, zdefiniuj symbol _UNICODE
. Domyślnie _UNICODE
jest definiowany dla aplikacji MFC. Aby uzyskać więcej informacji, zobacz Ogólne mapowania tekstu w pliku tchar.h.
Uwaga
Zachowanie jest niezdefiniowane, jeśli zdefiniujesz wartości i _UNICODE
_MBCS
.
Pliki nagłówkowe Mbctype.h i Mbstring.h definiują funkcje i makra specyficzne dla MBCS, które mogą być potrzebne w niektórych przypadkach. Na przykład informuje, _ismbblead
czy określony bajt w ciągu jest bajtem ołowiu.
Aby przemieścić międzynarodowy kod programu za pomocą zestawów znaków Unicode lub wielobajtowych (MBCS).
Co chcesz zrobić?
Włączanie zarówno formatu Unicode, jak i MBCS w moim programie
Tworzenie programu z internacjonalizowanego przy użyciu mbCS
Dowiedz się więcej o mapowaniach tekstu ogólnego na potrzeby przenoszenia bajtów szerokości