在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函数调用之前调用。

 

          

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值