1
Làm thế nào để xuất ký tự Unicode ra màn hình Console trong C++?
1
Hiệp Hào30 đã đăng:

Chào các bạn, mình muốn in ra màn hình Console chuỗi tiếng Việt nhưng các ký tự chứa dấu nó bị chuyển thành dấu chấm hỏi:

string Str = "Tiếng Việt";
cout << Str;

Kết quả: Ti?ng Vi?t

Làm thế nào để in ký tự Unicode của tiếng Việt ra màn hình Console trong C++ ạ?

thêm bình luận...
1
Khánh Hải40 đã đăng:

Sở dĩ string không thể lưu được ký tự Unicode bởi vì bản chất bên dưới, nó là mảng của các ký tự char, chúng ta hoàn toàn có thể gán một mảng char vào kiểu string, mà kiểu dữ liệu char thì không đủ số bytes để biểu diễn ký tự Unicode.

Thay vào đó bạn nên sử dụng wstring (wide string), bản chất của wstring bên dưới là mảng các ký tự wchar_t, một dạng mở rộng của char có thể đáp ứng được ký tự Unicode.

wstring = L"Tiếng Việt";

Mặc định trong Windows, console không hiển thị kiểu dữ liệu Unicode, để xuất wstring ra màn hình Console, bạn cần khai báo thêm dòng lệnh

_setmode(_fileno(stdout), _O_U16TEXT);

Một điều nữa, cout chỉ hoạt động với string, để xuất ra wstring bạn phải dùng wcout.

Chương trình mẫu:

#include <io.h>
#include <fcntl.h>
#include <string>
#include <iostream>
using namespace std;

int main() {
    _setmode(_fileno(stdout), _O_U16TEXT);
    wstring Str = L"Tiếng Việt";
    wcout << Str << endl;
}
đã bổ sung 5.5 năm trước bởi

sao em làm giống bác mà lúc gõ dấu nặng nó cứ thành ?, các dấu khác thì bình thường

Cộng đồng 22.02.2022
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)