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转换非常简单。
|
vini · 安装wfp内核驱动程序后,devcon状态返回39 2 年前 |
I101I · 如何镜像HBITMAP 2 年前 |
E235 · 如何查看谁创建了Windows NamedPipe 2 年前 |
Pizza Ãcke · 创建带有内存映像的Windows托盘图标 2 年前 |
Jabu · 如何获取列表框滚动条“拇指”的高度? 2 年前 |
tree1234 · 对可执行文件进行代码设计,并允许修改某些字节 2 年前 |
Penachia · PDF FontDescriptor标志 6 年前 |