Có hai vấn đề ở đây. Đầu tiên là các ký tự được cho phép trong mã C++ (và các chú thích), chẳng hạn như các tên biến. Thứ hai là những ký tự được cho phép trong chuỗi và chuỗi ký tự.
Như đã lưu ý, trình biên dịch C++ phải hỗ trợ bộ ký tự ASCII rất hạn chế cho các ký tự được phép trong mã và nhận xét. Trong thực tế, bộ ký tự này không hoạt động tốt với một số bộ ký tự châu Âu (và đặc biệt là với một số bàn phím Châu Âu không có vài ký tự - như dấu ngoặc vuông), vì vậy khái niệm về hình ảnh và hình chữ nhật giới thiệu. Nhiều trình biên dịch chấp nhận nhiều hơn ký tự này vào lúc này, nhưng không có bất kỳ sự bảo đảm nào.
Đối với chuỗi và chuỗi ký tự, C++ có khái niệm về ký tự rộng và chuỗi ký tự rộng. Tuy nhiên, mã hóa cho tập ký tự đó không được xác định. Trong thực tế nó hầu như luôn luôn là Unicode, nhưng tôi không nghĩ rằng có bất kỳ sự bảo đảm nào ở đây. Các chuỗi ký tự chuỗi ký tự rộng trông giống như chữ "chuỗi chữ", và chúng có thể được gán cho std :: wstring's.
C++ 11 bổ sung hỗ trợ rõ ràng cho các chuỗi Unicode và xâu, mã hóa theo UTF-8, UTF-16 về cuối lớn, UTF-16 little endian, UTF-32 về cuối lớn và UTF-32 little endian .
Nguồn
2008-12-02 00:14:49
* RE: "mọi thứ được gọi là": * [Từ Wikipedia] (https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane): Mặt phẳng đầu tiên, ** mặt phẳng 0 **, ** Basic Multilingual Plane (BMP) ** chứa các ký tự cho hầu hết các ngôn ngữ hiện đại và một số lượng lớn các ký hiệu. Mục tiêu chính của BMP là hỗ trợ thống nhất các bộ ký tự trước cũng như ký tự viết. Hầu hết các điểm mã được chỉ định trong BMP được sử dụng để mã hóa các ký tự ** Trung Quốc **, ** Nhật Bản ** và ** Hàn Quốc (CJK) **. – DavidRR