如何正确显示不同语言的字符?

时间:2013-05-12 17:43:53

标签: c++ mysql winapi character-encoding

我正在使用Visual C ++ / Windows API完成应用程序,我正在使用MySql C Connector。

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

此程序将用于配备Windows XP / Vista / 7或8的波兰语和德语计算机。

我想正确地显示德语变音符号和抛光重音字符:

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

我听说过MultiByteToWideChar和Unicode函数(MessageBoxW等),但是应用程序代码差不多完成了,转换工作很多......

如何以最少的工作和时间正确地进行字符编码?

可能更改了非Unicode程序的系统代码页?

1 个答案:

答案 0 :(得分:2)

首先,当然:MySQL返回的代码集是什么?也许: 将数据写入数据库时​​使用了什么代码集?

除此之外,我认为你不能避免使用 宽字符或多字节字符:单字节 字符,德语将使用ISO 8859-1(代码页1252)或 ISO 8859-15,波兰ISO 8859-2(代码页1250)。但究竟是什么 你在自己的代码中使用字符?你可能会 摒弃UTF-8(代码页65001),没有太多变化。 真正的问题是角色最初来自哪里 (尽管将它们翻译成可能并不太难 UTF-8立即在源头);我不认为是Windows 尊重输入的代码页。

虽然你知道它并没有多大帮助,但你正在处理 有一个几乎不可能的问题,因为这么多取决于 你的程序之外的东西:像编码的东西 例如,显示字体或键盘驱动程序。事实上, 程序在屏幕上显示一件事并不罕见, 和输出到打印机时的不同之处,或者 在屏幕上显示一个东西,但如果有什么不同的东西 数据被写入文件,并与另一个程序一起读取。该 情况正在改善 - 现代Unix和互联网 无处不在(逐渐)标准化UTF-8 对于一切,Windows通常使用UTF-16 一切都是纯Windows(但需要支持UTF-8) 互联网)。但即使使用平台标准也无济于事 如果人类客户端已安装(并正在使用)其中的字体 没有你需要的角色。