问题描述:
问题一直出现的很怪异,通过例子来阐述。
环境:
mysql-5.1.62-win32 + otl + mysql-connector-odbc-5.1.11-win32 + navicat101_mysql_en
建立一张测试表:
CREATE TABLE `t_cntest` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`value` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
t_cntest表只有两个字段,一个是递增的ID号,一个是可以保存中文的value;
当用otl开始往该数据表里面插入值时,问题出现了
1.insert into t_cntest(value) values ('中文');(下文称为%s方式)用navicat显示正常,但是再通过select value from t_cntest读出来,却是乱码;
2.insert into t_cntest(value) values (:f1); (下文称为流方式)
stream<<”中文”;
用otl的这中流方式方式写入mysql,再用流方式来读取
select value from t_cntest where value=:f1
读出来中文正常,但是navicat查看却是乱码;
3、网络解决办法
网上十有八九都是:set names utf8云云,但是otl不允许这么做,执行异常;
于是一个一个的来设置吧:
Set character_set_client=’utf8’
Set character_set_connection=’utf8’
Set character_set_results=’utf8’
可能我人品不好,还是NO!
====================================