如何在C++中显示越南语字符

How to display Vietnamese characters in C++?

本文关键字:显示 越南语 字符 C++      更新时间:2023-10-16

所以我目前正在学习C++11,我已经掌握了它的窍门。我想尝试使用不同的语言,由于我是越南人,我想制作一个使用越南语字符的C++程序。

那么,我如何才能像显示英语一样显示越南语字符,如下所示:

cout << "Hello. This is English" << endl; //English
cout << "Chào. Đây là tiếng Việt." << endl; //Vietnamese

我听说C++有<locale>。它有助于越南字符的出现吗?

您的环境可能遇到问题。你没有说你在什么平台/环境中运行,但采取以下程序:

#include <iostream>
#include <cstdlib>
int main()
{
std::cout << u8"Chào thế giới!" << std::endl;
return EXIT_SUCCESS;
}

这将从Mac OS X上的iTerm产生以下输出:Chào thế giới!

对于其他(非unicode)环境,使用相同的代码,您可能会在输出中得到被解释为ASCII的UTF-8字符。我不知道Windows命令行会产生什么结果,但如果你使用的是IDE,你的IDE可能会渲染UTF-8,也可能不会渲染UTF-8,这与你的shell是否渲染无关。

下面是一个网络示例。

https://code.sololearn.com/c39N9RN6b4Md/#cpp收益率:Ch├áo thß║┐ giß╗¢i!

但是http://ideone.com/OkkUZs运行完全相同的代码会产生:Chào thế giới!

可能还值得指出的是,在C++中,要正确处理UTF-8字符串,计算"字符",确保字符串是有效的UTF-8,等等。您可能需要使用Unicode库——使用Unicode绝非易事。

就我个人而言,我发现UTFCPP和TinyUTF8都是优秀的库——相当小,简单有效。

希望能有所帮助。

#include <iostream>
#include <io.h>
#include <fcntl.h>
int main() {
_setmode(_fileno(stdout), _O_U16TEXT);
std::wcout << L"Chào. Đây là tiếng Việt.";
}

这是一个适用于windows的解决方案。不幸的是,它不能移植到其他平台。