sqlite乱码
sqlite3存储类型为nvarchar类型,用c#读出来汉字内容却是乱码,而英文字母却是正确的,在网上搜索了一下问题出在sqlite3的编码问题上,它是utf8格式,怎...
sqlite3 存储类型为nvarchar 类型,用c#读出来汉字内容却是乱码,而英文字母却是正确的,在网上搜索了一下问题出在sqlite3的编码问题上,它是utf8 格式,怎么解决这个汉字乱码问题?
展开
2个回答
推荐于2016-02-24
展开全部
c#里面 sqlite ado 存是以 utf8存, 取的时候是以utf8格式取的,所以没问题。c++里写入是以ansi写入的,取的时候是以ansi 取的也没问题,而c++里以ansi写入 在c#里 sqlite ado以utf8取所以就出销族行现乱码问题了。解决问题的穗判根本就在于让 c++写入 适合sqlite 读取亏哗,也就是让c++写入时以utf8格式写入具体代码如下:string GBKToUTF8(std::string& strGBK){ string strOutUTF8 = ""; wchar_t * str1; int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); str1 = new WCHAR[n]; MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n); n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL); char * str2 = new char[n]; WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL); strOutUTF8 = str2; delete[]str1; str1 = NULL; delete[]str2; str2 = NULL; return strOutUTF8;}
方便广大网友省一些时间!
方便广大网友省一些时间!
2013-03-31
展开全部
一种方式是:设置数据编码为 GB2312 ..(在SQLite数据库管理器那边可以改)..[推毕枯宏荐]然后不然败前就是在代码里面重新转换数据..这种方式比较麻烦,也耗资源...思路是先将从sqlite数据库读取出的手册nvarchar 转换成byte[] 数组..然后 调用 System.Text.Encoding.Unicode.GetString(byte[] 数组); 它返回的应该是 无乱码的数据了.只是一时想到的两种方式.. 可能还有好的解决办法吧...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |