我正在整理Visual C++ / Windows API中的应用程序,并且正在使用MySql C Connector。

整个应用程序代码都使用ANSI,MySql C Connector也在ANSI中。

该程序将在带有Windows XP / Vista / 7或8的波兰和德国计算机上使用。

我想在以下位置正确显示德语变音符号并擦亮重音符号:

  • 对话框控件(从语言文件中加载字符串)
  • 生成的XHTML文档
  • 从MySql数据库检索的字符串显示在控件和XHTML文档中

  • 我听说过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/

    10-11 03:32
    查看更多