在使用DelphiXE3和SQLite3进行程序开发时,解决最后一个字符乱码的问题-阿里云开发者社区

开发者社区> 非常老帅> 正文

在使用DelphiXE3和SQLite3进行程序开发时,解决最后一个字符乱码的问题

简介: 在使用DelphiXE3和SQLite3进行程序开发时,如果使用原版的SQLiteTable3,当使用UTF8Decode函数之后,可能依然存在乱码问题,一个表现就是,最后一个汉字显示为框,后面跟一个问号,其他的汉字解码正常。
+关注继续查看

在使用DelphiXE3和SQLite3进行程序开发时,如果使用原版的SQLiteTable3,当使用UTF8Decode函数之后,可能依然存在乱码问题,一个表现就是,最后一个汉字显示为框,后面跟一个问号,其他的汉字解码正常。

后来跟踪了一下SQLiteTable3的源代码,从SQLite获取的字符串数据是正确的,但是因为TSQLiteTable的构造函数在读取SQLite返回的UTF8字符串时使用了setstring函数,强行将数据字段进行了转换,引起字符串长度出现错误,所以在UTF8Decode解码时出现了漏解码的问题。

这里给出一种解决方案,修复了该Bug。

1.将TSQLiteTable的构造函数Create中的setstring行改为:

      Var

         strStr: String;
         strValue: PWideChar;      

      //****************************************

      strStr := UTF8Decode(AnsiString(ptrValue));

      strValue := PWideChar(strStr);
      setstring(thisStringValue^, strValue, strlen(strValue));

因为在delphixe3中,setstring函数的第二个参数是PChar,也就是PWideChar类型。

2.在面在调用时,不需要再UTF8Decode解码

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
IntelliJ IDEA常见问题解决办法汇总
IntelliJ IDEA常见问题解决办法汇总
720 0
xshell,putty远程连接Linux并使用密钥认证
putty秘钥登录 1.软件:putty、puttygen puttygen点击Generate生成公钥和私钥   二次保障,输入设置密码   点击保存私钥文件即可。
1145 0
使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
原文:使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理 摘要 通过对博客文章的管理,实现外键操作。 目录[-] 八、博客文章管理 1、查看文章 2、添加博客        3、查看博文详情 4、修改博客内容 5、删除博客文章 九、尾声         1、如何部署 2、进一步的学习 3、ENDING 转载请注明出处:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 。
1058 0
intellij idea搭建ssh开发框架之绑定数据源
原文: intellij idea搭建ssh开发框架之绑定数据源 在intellij idea中绑定数据源并生成hibernate实体对象。
1232 0
使用Verilog实现FPGA偶数/奇数分频电路设计并使用modelsim仿真
本人地大14级师兄,如果有学弟学妹搜到这个评论一个呗! 一、设计要求 编写VerilogHDL程序,实现如下功能: 输入时钟信号和复位/信号,实现4分频/5分频,占空比为1:1.   二、设计思路 1.偶数分频 假设为N分频,计数到N/2-1时,时钟翻转、计数清零,如此循环就可以得到N(偶)分频   2.奇数分频(占空比为50%) (1)假设为N分频,取一个进行上升沿触发的模N计数,触发时钟翻转后,经过(N-1)/2再次进行翻转,得到一个占空比非50%奇数N频时钟。
1686 0
使用developer kit 初步打通阿里生活物联网平台
最近小编又发现了一块新大陆,阿里智能生活平台,那么什么是阿里智能生活平台呢。阿里的官方解释如下:生活物联网平台,顾名思义就是应用于生活,以解决家电设备快速智能化的问题。平台针对家电智能化的设备连接、移动端控制、设备管理、数据统计等问题,打包阿里云多款产品,提供了一整套配置化方案,大幅减低“设备-云端-App”的开发成本。
1418 0
Android官方开发文档Training系列课程中文版:通知用户之在通知中显示进度
原文地址:http://android.xsoftlab.net/training/notify-user/display-progress.html#FixedProgress 通知中包含了一个进度指示器,用来向用户展示一项正在进行中的工作状态。
676 0
Ubuntu 中用 delphi 开发 apache
经过近15年的沉默。delphi 10.2 终于重新开始支持linux 开发了。 今天说一下在ubuntu中开发apache的方法。 首先安装ubuntu 的delphi 开发环境,请参考以前的文章 http://www.cnblogs.com/xalion/p/6368899.html   在delphi 10.2 中,只支持apache 2.4(既然有新的,不支持2.2也就无所谓了)。
1105 0
+关注
非常老帅
IT行业从业10+年
481
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载