mysql与字符串国际化

最近试图用C++ 直接调用mysql 的内嵌服务器来管理大量数据,遭遇到了许多字符串国际化问题,现记录在此。
 
要注意的关键点是:
 
1. C++语言中的 L"" 代表宽字符,但不一定代表Unicode字符。字符的内容取决于你把C++文件按什么编码来保存。
 
2. Unicode是一个太过于笼统的说法,极易引起歧义。以下多种编码都可以叫Unicode:utf8, ucs2, ucs2 (big endian), Unicode 32.
 
3. 一旦选择了某种编码,就要在程序中任何地方都保持一致。
 
4. 即使在程序中采用宽字符 (16bit),也不能确保一个字符就对应一个文字。某些语言的文字可能占据4个字节。
 
5. mysql可以精确控制在客户端、传输、服务器、数据库层级的编码设置。所有的编码必须一致,否则就会在转换过程中出现信息丢失从而看到?符号。
在我的实际例子中,我的程序全部采用的是ucs2编码,而在mysql端全部采用utf8编码。
 
Mysql中:
create database database_name character set utf8;
alter database database_name character set utf8;
C++中:
mysql_options(mpMySql, MYSQL_SET_CHARSET_NAME, "utf8");
mysql_set_character_set(mpMySql, "utf8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值