sqlite乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlite乱码相关的知识,希望对你有一定的参考价值。

sqlite3 存储类型为nvarchar 类型,用c#读出来汉字内容却是乱码,而英文字母却是正确的,在网上搜索了一下问题出在sqlite3的编码问题上,它是utf8 格式,怎么解决这个汉字乱码问题?

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;
方便广大网友省一些时间!
参考技术A 一种方式是:设置数据编码为 GB2312 ..(在SQLite数据库管理器那边可以改)..[推荐]然后不然就是在代码里面重新转换数据..这种方式比较麻烦,也耗资源...思路是先将从sqlite数据库读取出的nvarchar 转换成byte[] 数组..然后 调用 System.Text.Encoding.Unicode.GetString(byte[] 数组); 它返回的应该是 无乱码的数据了.只是一时想到的两种方式.. 可能还有好的解决办法吧...

svn 更新文件冲突,提示中文乱码解决

问题描述:

update 操作提示错误信息,中文乱码 和 “Please execute the ‘Cleanup‘ command.”

技术分享图片

Cleanup 操作报错:

技术分享图片

 

 

解决办法:

1. 工具下载(sqlite3.exe): 

链接:https://pan.baidu.com/s/1OXWMZPCsmRNEe3FluIdRuQ密码:v773

<sqlite3.exe>解压到指定目录,<D:SVN>

2. 找到<wc.db>

一般在svn文件默认目录下, .svnwc.db 

PS:文件夹选项设置,改为显示隐藏文件。

技术分享图片

3. 将<wc.db> 放置到<sqlite3.exe>目录下,也就是<D:SVN>下面

技术分享图片

4. 进入控制台(win+R;cmd进入),切换至<D:SVN>路径下

5. 执行命令:

① sqlite3 wc.db //进入到wc.db中 

技术分享图片

② select * from work_queue; //查看work_queue表中是否有乱码

 技术分享图片

③ delete from work_queue; //删除即可

④ 关闭dos窗口

 

6. 将<wc.db>文件复制回原路径,重新执行cleanup操作,查看结果

结果显示为被锁定,继续重复上面操作

① sqlite3 wc.db //进入到wc.db中

② delete  from WC_LOCK; //删除锁定表的数据

7. 操作后文件回复原位,查看显示

8. 不再报错,问题解决

 

以上是关于sqlite乱码的主要内容,如果未能解决你的问题,请参考以下文章

adb shell 中文乱码 sqlite中文乱码

QString和std::string转换乱码与sqlite存储汉字乱码

QString和std::string转换乱码与sqlite存储汉字乱码

qt读取sqlite乱码怎么解决

svn清理失败且路径显示乱码

最近学python和bottle框架,用sqlite3,网页中文显示乱码,咋办捏?