1

我正在完成 Visual C++/Windows API 中的应用程序,并且正在使用 MySql C 连接器。

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

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

我想在以下位置正确显示德国变音符号和波兰重音字符:

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

我听说过 MultiByteToWideChar 和 Unicode 函数(MessageBoxW 等),但应用程序代码已接近完成,转换工作量很大......

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

也许更改非 Unicode 程序的系统代码页?

4

1 回答 1

2

首先,当然: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互联网)。但即使使用平台标准也不会

于 2013-05-12T18:09:40.197 回答