Włączanie internacjonalizacji

Większość tradycyjnego kodu C i C++ przyjmuje założenia dotyczące manipulowania znakami i ciągami, które nie działają dobrze w przypadku aplikacji międzynarodowych. Mimo że zarówno MFC, jak i biblioteka czasu wykonywania obsługują standard Unicode lub MBCS, nadal możesz wykonać pracę. W tej sekcji opisano znaczenie "włączania międzynarodowego" w języku Visual C++:

  • Zarówno Unicode, jak i MBCS są włączone za pomocą przenośnych typów danych na listach parametrów funkcji MFC i zwracanych typach. Te typy są definiowane warunkowo w odpowiedni sposób, w zależności od tego, czy kompilacja definiuje symbol _UNICODE , czy symbol _MBCS (co oznacza DBCS). Różne warianty bibliotek MFC są automatycznie połączone z aplikacją, w zależności od tego, które z tych dwóch symboli definiuje kompilacja.

  • Kod biblioteki klas używa przenośnych funkcji czasu wykonywania i innych środków w celu zapewnienia poprawnego zachowania Unicode lub MBCS.

  • Nadal musisz obsługiwać pewne rodzaje zadań międzynarodowych w kodzie:

    • Użyj tych samych przenośnych funkcji czasu wykonywania, które sprawiają, że MFC jest przenośna w obu środowiskach.

    • Ustaw ciągi literału i znaki przenośne w obu środowiskach przy użyciu makra _T . Aby uzyskać więcej informacji, zobacz Ogólne mapowania tekstu w pliku tchar.h.

    • Podejmij środki ostrożności podczas analizowania ciągów w mbcs. Te środki ostrożności nie są wymagane w formacie Unicode. Aby uzyskać więcej informacji, zobacz MBCS Programming Wskazówki.

    • Pamiętaj, aby mieszać znaki ANSI (8-bitowe) i Unicode (16-bitowe) w aplikacji. Istnieje możliwość użycia znaków ANSI w niektórych częściach programu i znaków Unicode w innych, ale nie można ich mieszać w tym samym ciągu.

    • Nie należy zapisywać ciągów w kodzie w aplikacji. Zamiast tego utwórz je jako zasoby STRINGTABLE, dodając je do pliku RC aplikacji. Następnie aplikację można lokalizować bez konieczności wprowadzania zmian w kodzie źródłowym lub ponownej kompilacji. Aby uzyskać więcej informacji na temat zasobów STRINGTABLE, zobacz Edytor ciągów.

Uwaga

Europejskie i MBCS mają pewne znaki, takie jak litery wyróżniające, z kodami znaków większymi niż 0x80. Ponieważ większość kodu używa znaków ze znakiem, te znaki większe niż 0x80 są rozszerzane podczas konwersji na int. Jest to problem z indeksowaniem tablicy, ponieważ znaki rozszerzone znaki są ujemne, indeksy poza tablicą. Języki korzystające z MBCS, takie jak japoński, są również unikatowe. Ponieważ znak może składać się z 1 lub 2 bajtów, zawsze należy manipulować obydwoma bajtami w tym samym czasie.

Zobacz też

Unicode i MBCS
Strategie internacjonalizacji