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 * str1int 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 = str2delete[]str1str1 = NULLdelete[]str2str2 = NULLreturn strOutUTF8}
方便广大网友省一些时间!
问题一:一般情况下数据库进行数据 *** 作都是你一开始自定义的编码,如果你像使用其他编码就必须强制转换了,要你没打入强制装换的代码,数据库还是按默认编码格式运行的。 问题二:有可能是它保存时是使用的GB2312编码,所以必须得按这种编码去查询,不然即使有显示也会是乱码。 问题三:你需要的时候就可以进行编码转化,比如你的浏览器不支持你现在的编哗锭糕瓜蕹盖革睡宫精码格式。可以。 谢谢大家的帮忙,有些问题还请多多指教,现在略微清楚些了,学习中。。。
评论列表(0条)