博客日历
2024年11月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
开源MFC扩展界面库:Ultimate Toolbox的编译
下载地址:
http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx
出现编译错误的文件:
OXHTMLParser.cpp
OXParser.cpp
OXPhysicalEditEx.cpp
OXQuickString.cpp
出错的原因乍看起来是字符串的引号不配对,实际上是因为Ultimate Toolbox的源码文件
都是WINDOWS-1252编码的,且文件中包含编码是0xA0的字符,这些字符无法在中文操作系
统下的VC++编辑器中正常显示。
解决方法是将这几个文件的编码转换为UTF-8,或者将“区域和语言选项”
中“非Unicode程序的语言”改为“英语-美国”。
另外,VC++的头文件中"WABTAGS.H"也存在这个问题。
备注0:
iconv是MinGW中的一个字符编码转换工具
下载地址:http://sourceforge.net/projects/mingw/files/MinGW/libiconv/libiconv-1.13.1-1/
百度百科:http://baike.baidu.com/view/1437030.htm?fr=ala0_1
使用方法:
iconv.exe -f WINDOWS-1252 -t UTF-8 x.cpp>x.cpp.utf8
del x.cpp
rename x.cpp.utf8 x.cpp
备注1:
Ultimate Toolbox是开源的
不开源的还有几个比较好的MFC扩展界面库:BCGControlBar,Xtreme Toolkit
备注2:
下载Ultimate Toolbox后,将几个压缩包解压缩到同一个目录,否则编译示例程序时
会提示找不到UTSampleAbout.rc
目录结构如下:
+Ultimate Toolbox
-Problems.txt
+Ultimate Toolbox
-archive
-include
-lib
-samples
-source
-license.htm
-ChangeHistory.htm
+UTBX93.chm
分类:Win32/C++ 查看次数:17853 发布时间:2010/7/18 23:06:07
用MySQL Connector C++访问MySql数据库,中文UTF-8乱码的解决
直接上代码:
// MySqlTest.cpp : 定义控制台应用程序的入口点。 // #include <iostream> using namespace std; //MySQL Connector C++ 1.0.5,接口跟Oracle的OCCI长的很像(跟JDBC也像),Oracle-MySql官方网站可下载 //D:\Program Files\MySQL\MySQL Connector C++ 1.0.5\include //D:\Program Files\MySQL\MySQL Connector C++ 1.0.5\lib\opt #include <mysql_connection.h> #include <cppconn/statement.h> #include <cppconn/exception.h> using namespace sql; using namespace sql::mysql; #pragma comment(lib,"mysqlcppconn.lib") int main(int argc, char* argv[]) { try { //数据库连接 MySQL_Connection MySqlConn("localhost","root","006355"); //选择数据库(模式) MySqlConn.setSchema("test"); Statement *pStatement = MySqlConn.createStatement(); //在Mysql数据库中,我设置的编码是GB2312,但是这里读出的仍是UTF-8编码的字符 //所以需这句来解决乱码问题 //执行无记录集返回的语句 pStatement->execute("set names gb2312"); //执行有记录集返回的语句 //注意反引号 "`",呵呵 ResultSet* pRs=pStatement->executeQuery("Select * from `Users`"); while (pRs->next()) { cout<<pRs->getInt("id")<<endl; string sChineseText=pRs->getString(2); cout<<sChineseText<<":"; //输出汉字的编码 //D5 C5 C8 FD 张三 ANSI/OEM936:GBK/GB2312 //E5 BC A0 E4 B8 89 张三 UTF8 for (size_t i=0;i<sChineseText.length();i++) { printf("%02X ",(unsigned char)sChineseText[i]); } cout<<endl; cout<<pRs->getString("password")<<endl<<endl; } pRs->close(); pStatement->close(); MySqlConn.close(); } catch (SQLException& ex) { cout<<"Error:"<<ex.what()<<endl; } return 0; }
文档参见:《MySQL 5.5 Reference Manual》21.5. MySQL Connector/C++
可惜的是:
22.5.12.2: Which MySQL Server version(s) is MySQL Connector/C++ compatible with?
MySQL Connector/C++ fully supports MySQL Server version 5.1 and later.
使用低版本MySQL服务器的话,还需MySQL C API。
分类:数据库 查看次数:15387 发布时间:2010/7/11 11:54:21