我正在整理Visual C++ / Windows API中的应用程序,并且正在使用MySql C Connector。
整个应用程序代码都使用ANSI,MySql C Connector也在ANSI中。
该程序将在带有Windows XP / Vista / 7或8的波兰和德国计算机上使用。
我想在以下位置正确显示德语变音符号并擦亮重音符号:
我听说过MultiByteToWideChar和Unicode函数(MessageBoxW等),但是应用程序代码已接近完成,转换工作量很大。
如何以最少的工作和最少的时间正确进行字符编码?
也许更改非Unicode程序的系统代码页?
最佳答案
首先,当然:MySQL返回什么代码集?也许:
将数据写入数据库时使用了什么代码集?
除此之外,我认为您将无法避免使用
宽字符或多字节字符:单字节
字符,德语将使用ISO 8859-1(代码页1252)或
ISO 8859-15,波兰ISO 8859-2(代码页1250)。但是什么是
您在自己的代码中使用字符吗?您可能能够
无需许多更改即可使用UTF-8(代码页65001)。
真正的问题是角色最初来自哪里
(尽管将它们翻译成
UTF-8立即从源头开始);我不认为Windows
尊重代码页的输入。
尽管它并不能帮助您了解很多,但是您正在处理
几乎不可能解决的问题,因为这很大程度上取决于
程序外的东西:诸如编码的东西
显示字体或键盘驱动程序。事实上,
程序在屏幕上显示一件事并不罕见,
和输出到打印机或
在屏幕上显示一件事,但如果
数据被写入文件,并通过另一个程序读取。的
情况正在改善-现代Unix和Internet
逐渐(非常逐渐地)对UTF-8进行标准化
以及所有功能,Windows通常使用UTF-16进行
所有纯Windows操作系统(但需要支持UTF-8)
互联网)。但是即使使用平台标准也无济于事
如果人工客户端已安装(并且正在使用)字体,
没有所需的字符。
关于c++ - 如何正确显示来自不同语言的字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16510301/