SQLite关于转码
来源:互联网 发布:单片机电子密码锁编程 编辑:程序博客网 时间:2024/05/20 10:23
SQLite在保存中文的时候,他会默认就行UTF8到Unicode的转换,而从里面取出数据的时候它又会我们表里字符默认转成UTF8.........难道它是考虑到只跟网页的交互了吗?完全没有顾及到应用程序在用他的时候的感受,所有,我们在插入数据(带中文),跟取出数据的时候,就得对字串进行一番转码了。
首先看看存储的时候,把Unicode转为UTF8,然后交给SQLite,它把它认为是从网页上来的数据默认进行UTF8到Unicode的转换,这时,我们在表里看到的数据才是我们所熟悉的Unicode, 废话不说了,直接上例子。
// 获取到的中文数据的转码void UTF8Transcoding(string &str){int len = WideCharToMultiByte(CP_UTF8,0,CA2W((char*)str.data()),-1,NULL,0,NULL,NULL);char *strNew = new char[len+1];WideCharToMultiByte(CP_UTF8,0,CA2W((char*)str.data()),-1,strNew,len,NULL,NULL);strNew[len] = '\0';str.clear();str = strNew;delete[] strNew;return ;}
然后是我们取到数据后,又是SQLlite这货把咱么认为成网页而默认把我们的数据转成UTF8传给我们了,所以还得进行 UTF8到Unicode的转换,还是看例子:
// 获取到的中文数据的转码void Change(string &str){int len = MultiByteToWideChar(CP_UTF8,0,str.data(),-1,NULL,0);WCHAR *strNew = new WCHAR[len+1];MultiByteToWideChar(CP_UTF8,0,str.data(),-1,strNew,len);str.clear();str = CW2A(strNew);delete[] strNew;return ;}
CW2A是将宽字符转换为同样意思的窄字符,需要包头文件 #include "atlbase.h"
0 0
- SQLite关于转码
- 关于SQLite ADO.NET[转
- 关于SQLite
- 关于sqlite
- 关于SQlite
- 关于SQLite
- 关于SQLITE
- 关于sqlite
- 关于SQLite
- 关于SQLite
- 关于SQLite
- 关于SqLite
- 关于Sqlite工具 DxSqliteManagement
- 关于SQLite 转帖
- 关于SQLite创建视图
- 关于sqlite多线程
- 关于sqlite写入操作
- 关于SQLITE的使用
- 使用NSAssert
- HDU1231最长连续子序列(最简单的DP)
- Java读取文件方法
- servlet简单的验证码登录验证
- Comparison method violates its general contract
- SQLite关于转码
- perl sprintf()函数
- STL中的size()方法(13)
- Ubuntu12.04输入法突然消失的解决方法
- 291 - The House Of Santa Claus
- 线段树模板
- 使用Java调用以WSDL形式发布的web service
- 目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结
- 数据库的范式理论