Linux下无法将wchar_t字符串中的CJK字符打印出来怎么办? miyuri C 2020-11-03 现有以下程序: ```cpp #include int main() { wchar_t wcstr[] = L"你是一个,一个一个一个……啊,啊!!!!!1919YJSNPI"; std::wcout << wcstr << std::endl; } ``` 该程序在终端输出的文本中,中文全变成了问号,且全角标点符号全被自动转换成了半角。(还挺智能的) ``` ????,??????......?,?!!!!!1919YJSNPI ``` ### 解决方法 在主函数开头添加一句 ```cpp setlocale(LC_ALL, ""); ``` 即可。 第一个参数的`LC_ALL`指修改所有程序内的区域选项(包括货币格式、时间格式等)。 第二个参数放空字符串,代表直接读取Linux系统的区域设置。因为现在这年头几乎所有Linux发行版的默认文字编码都是UTF-8,乱码问题自然迎刃而解。 要是好奇心爆棚想知道自己的Linux系统的区域设置是什么的话,在终端中键入`locale`自己一睹为块吧。 本文由 miyuri 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。
还不快抢沙发