|
1
7
win32 api已经有一个函数来执行此操作,widechartomultibyte(),codepage=cp_tf8。使您不必依赖其他库。 通常不能将结果与wcout一起使用。它的输出到控制台,出于传统原因,它使用8位OEM编码。可以使用setconsolecp()更改代码页,65001是utf-8(cp_utf8)的代码页。 下一个绊脚石是用于控制台的字体。你将不得不改变它,但要找到一个固定的字体,有一套完整的字形覆盖Unicode将是困难的。当您得到输出中的方形矩形时,您会发现字体有问题。问号是编码问题。 |
|
|
2
3
为什么要在内部使用utf8?您是否使用过多的文本以至于使用UTF16会产生不合理的内存需求?即使是这样,无论如何,您最好使用宽字符,并以其他方式处理内存问题(使用磁盘缓存、更好的算法或数据结构)。 在内部使用win32 api自带的宽字符,只在读取或写出需要它的数据(如xml文件或rest api)时才进行utf8转换,您的代码将更干净、更容易处理。 您的问题也可能发生在将输出打印到控制台的位置,请参见: Output unicode strings in Windows console app
最后,我还没有使用utfcpp库,但是使用win32进行utf8转换非常简单。
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |