首页mysqlmysql++ › 在Windows下mysql++支持UTF8

在Windows下mysql++支持UTF8

这几天帮一个朋友修改一个产品,这个产品是在Windows下通过C++的mysql++去访问mysql数据库,同时,该产品的数据需要支持多语 言(中文、日文、韩文、法文等)。而mysql对于多语言的支持采用的字符集是utf8,但是,在windows下的vs中是采用unicode,这样就 需要进行字符集的转化。而该产品的代码中,又使用了STL的string,这样就更麻烦了。

因此,在往mysql++传入sql语句的之前,需要先把string(ANSI)转为宽字节(wchar_t),然后再从宽字节转为UTF8格式。

所以,第一步ANSI转为宽字节(wchar_t)

其中,MultiByteToWideChar这个函数是Windows的API,是在文件atlconv.h中声明的。具体该函数的相关说明在msdn有详细的说明了。这里面就不多说了。

第二步宽字节转为UTF8

同样,WideCharToMultiByte也是Windows的API。

在从mysql中取出数据格式也是UTF8,要显示这些数据,也需要对这些数据进行字符集的转换,需要转为ANSI或者UNICODE。

另外,在mysql++中,为了与mysql数据传输采用UTF8格式的话,需要在创建连接之前,设置字符集为UTF8;

具体是调用mysqlpp::Connection的set_option函数,参数是new SetCharsetNameOption(“utf8”);

比如:mysqlCon.set_option(new SetCharsetNameOption(“utf8”),不过,一定要是在connect函数调用之前调用。

发表评论