在使用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解码

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

  1. 实习之遇到QT程序开发时的问题及解决方案

    实习之遇到QT程序开发时的问题及解决方案 1.QT中QString和C++中的String转换 ·问题: 由于一开始是在codeblocks中编程,一直使用的是String类型,现在将程序移到QT中运 ...

  2. C语言 编写程序:由键盘输入一个字符判断是字母数字还是其他符号。

    c语言程序题 编写程序:由键盘输入一个字符判断是字母数字还是其他符号. #include<stdio.h> void main() {char a;scanf("%c" ...

  3. 海鲜商城小程序开发,解决海鲜市场供需难题

    海鲜在我们的日常生活中已经屡见不鲜了,而且深受很多人的喜爱.海鲜中含有丰富的营养元素,如蛋白质.脂肪酸.维生素.钙.铁.锌等,适量吃海鲜可以补充营养,增强免疫力.同时海鲜的脂肪含量相对其他肉类而言较少 ...

  4. uniapp微信小程序开发如何解决input框或者(textarea)框输入时界面被顶起,输入法遮盖输入框的问题?

    最近在写微信小程序开发,客服吐槽,点击输入时界面总是被顶起来,输入框也被遮挡了一半,以下是解决方案. 首先将输入框设置为不向上顶页面的参数如下 输入框参数 :adjust-position=" ...

  5. 小程序开发时能否使用我们自定义的字体图标

    转载地址:https://segmentfault.com/a/1190000008518103 相关讨论一:字体文件无法加载,确认文件是存在的 @font-face {font-family:'Gl ...

  6. 微信小程序开发手记之七:一个小程序上线后的总结(上)

    终于,经过大概一周时间,磕磕绊绊地提交审核了,一个移动猿开发小程序,也算有了些心得,也遇到了些坑,这里和大家一起分享下. 怎么样调布局 先说一个题外话,最后引入正题. 如果翻看过一些资料,大家肯定很容 ...

  7. 微信小程序开发时遇到403错误解决

    前端程序向后台服务器发送请求时,如果服务器不允许跨域请求,则会导致403错误发生(错误信息为:"Invalid CORS request").我们通常的解决办法是将信任的域配置到C ...

  8. 小程序开发时openid和unionid

    记录: 1.openid长度28,unionid长度29 2.openid在同一应用唯一,unionid在所有应用唯一.看到一个很好的解释:(openid 相当于个人在学校的学号,unionid相当于 ...

  9. 微信小程序开发时,下载node.js安装后出错误怎么办

    我看了一个教学视频,是用的vantweapp,里面有很多组件可以直接用,但是要安装node.js,然后我就是按照网上的教学视频安装步骤,一步步的点击但是会出现一串错误,如果有新手小白出现我一样问题的可 ...

最新文章

  1. synchronized原理_Synchronized 实现原理
  2. CSS 后台布局实例
  3. C++面试宝典2011
  4. mysql 安装手册(转)
  5. mysql使用IS NULL查询null值
  6. LeetCode 625. 最小因式分解(贪心)
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的民宿客栈系统
  8. 一次完整的http请求
  9. asp.net关于倒出excel文件
  10. Zabbix主机处于check_ping_icmpping状态问题解决
  11. 通过GUID生成可持久化的PID
  12. 二十一天学通C语言:函数型指针
  13. 用.htaccess 禁止IP访问
  14. recyclerview简单实现立体魔方动画切换效果
  15. linux_linux自动化换源等优化美化自动化操作脚本/oh my zsh安装/卸载与删除/vim/vi卸载与更新异常/linux发行版本/内核版本查看
  16. 通过京东商品ID获取京东优惠券信息,京东优惠券信息接口,京东优惠券API接口,接口说明接入方案
  17. 科学家揭开猫狗不和之谜 情感表达方式不同
  18. 合并 2 个有序列表(关键词:有序列表/有序/合并/归并)
  19. axios get带参数的请求方法
  20. Python日历模块| 使用示例的weekday()方法

热门文章

  1. 实用分享-学习资料下载器
  2. access抓取数据_十年数据库流行度,哪款是你的最爱
  3. 接口测试——测试用例执行
  4. 进入到一个新的产品,如何开展测试工作
  5. 黄金三月,技术自检 | 作为测试人必备的10项 Linux 技能
  6. 面试官的几句话,差点让我挂在HTTPS上
  7. JMeter的编码与HTTP请求
  8. 从【银行销冠】化身测试工程师,小哥这样实现了人生的逆转
  9. fread读取同一个文件得到缓冲区大小不同_c++日志文件操作
  10. 黑群晖 断电 检测有bad sector_金属你不会以为回收就能直接再用吧,不是的,这些再生金属材料检测知识,很少人知道...