今天在测试delphi2010的DBExpress读取mysql数据库功能的时候,发现了一个问题:

我的mysql是5.1版本,字符集全部设置为utf8,使用delphi2010读取intger、tinyint、char、varchar等类型,中文显示正常。但是当读取text类型字段时候,出现乱码。如果将该字段更换为varchar,内容显示正常。这就奇怪了,我百思不得其解。

接着,我到网上查询这个问题,发现也有朋友出现类似text类型乱码的问题,但是都没有解决答案(我的character_set_*设置正确,这一点肯定是没问题的)。我又查询了一下mysql手册,针对TEXT字段解释如下:

“BLOB列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)”

从Mysql解释上看,TEXT和BLOB字段实质上没什么区别,都是二进制流,text类型多一个字符集设置。

另外,大家看一下这里,下图是mysql的character设置,其中一项character_set_filesystem=binary,对文件系统使用二进制存储,能不能TEXT也是按binary方式存储的呢?如果是这样,乱码的问题就能通过其他方式解决。

delphi 程序:

Memo1.lines.Add(UTF8ToUnicodeString(StringOf(SQLQuery.FieldByName('tt').AsBytes)));

使用上面修改的delphi代码,就能成功读取text类型的字段。如果用老的代码Memo1.lines.Add(SQLQuery.FieldByName('tt').AsString);读取text类型的内容就是乱码。

总结:

这个问题似乎是delphi的bug吧,没有时间深入研究delphi的代码,如果哪位兄弟想深入研究,请在我的博客中留言。

mysql text取出乱码_关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案相关推荐

  1. 原声php 读取excel乱码_使用PHPExcel读取Excel文件时会读出乱码

    这是我读取文件的代码: require_once dirname(__FILE__) . "/PHPExcel/Classes/PHPExcel.php";$PHPReader = ...

  2. 关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案

    今天在测试delphi2010的DBExpress读取mysql数据库功能的时候,发现了一个问题: 我的mysql是5.1版本,字符集全部设置为utf8,使用delphi2010读取intger.ti ...

  3. pb mysql 中文乱码_解决springmvc+mybatis+mysql中文乱码问题

    近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文出现乱码 最初在mybatis配置如下 select text from News where id=#{o} 其中表New ...

  4. mysql substr 中文乱码_刚碰到的MySql乱码的问题

    4 楼 yyyyy5101 2009-11-12 $conn=mysql_connect("localhost","root","123456&quo ...

  5. c# mysql 汉字乱码_在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处 ...

  6. shell取mysql数据_通过shell读取mysql数据——20120417

    [CentOS6.5下通过Shell创建.备份.还原MySQL数据库创建数据库:mysql -uroot -p123456 -e CREATE DATABASE IF NOT EXISTS yourD ...

  7. mysql java中文乱码_解决JAVA写mysql时出现中文乱码的现象

    参考地址:http://www.cnblogs.com/amboyna/archive/2008/06/18/1224570.html 今天部署已有一个java服务到另一台机器时出现写入数据库中文乱码 ...

  8. python django mysql写入中文乱码_解决django 向mysql中写入中文字符出错的问题

    之前使用django+mysql建立的一个站点,发现向数据库中写入中文字符时总会报错,尝试了修改settings文件和更改数据表的字符集后仍不起作用.最后发现,在更改mysql的字符集后,需要重建数据 ...

  9. mysql text字段导出_用命令创建MySQL数据库

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -u root ...

  10. mysql 存储时间 时间戳_存储和读取MYSQL时间戳

    from_unixtime(date,'%Y%m%d')是MySQL里的时间函数 date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y ...

最新文章

  1. 显微镜下的大明内容_《显微镜下的大明》epub、mobi、azw3
  2. 基于微信的图片放大预览
  3. vim文本编辑器详解
  4. IT人员健康信号之鼻炎养护
  5. 线性代数之矩阵标准型的求法
  6. Apache Flink 零基础入门(九)Flink支持哪些数据类型
  7. linux学习-用户的特殊 shell 与 PAM 模块
  8. 【蓝桥杯Java_C组·从零开始卷】第四节(附)、字符串常用函数
  9. 如何得到暴雪娱乐公司的工作机会?
  10. 基于jsp+mysql+Spring的SpringBoot招聘网站项目(完整源码+sql)主要实现了管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历
  11. idea复制maven项目,source root为原项目的解决方法
  12. 外媒吐槽:iPhone 13系列为史上力度最小的升级
  13. 判断点在直线的哪一侧_【倒车入库】车身是否“正直”该怎么判断?
  14. 第2章[2.8] Ext JS的控制器类型及使用
  15. Linux之MariaDB
  16. 计算机表格功能怎么用,Excel表格开发工具中的查看代码功能怎么使用
  17. 繁体字生僻字数据库报错处理
  18. 【抽象代数】半群、子群、商群
  19. HOJ 10027 Longest Ordered Subsequence Extention
  20. Wireshark抓取网络聊天

热门文章

  1. Login控件:用户登录失败的消息提示。
  2. TTC - Building a Better Vocabulary
  3. unity找到特定一个物体的子物体,多个子物体有相同的名称
  4. Atitit 增强代码健壮性 出错继续执行恢复模式,就像vbs那样我以为我可以使用Try/Catch,但是我找不到异常后是否可以继续执行代码,并且找不到如何在最后显示错误消息。目录PHP
  5. Atitit 并发处理 go与 java对比较 目录 1. 并发编程的七个模型 线程,fp,actor,csp 数据级并行 Lambda 1 2. 四种并发编程模型简介 多线程,callback
  6. Atitit 分布式之道 之常见的分布式技术 1. 第十二章基于对象的分布式系统 1 1.1. Corba dcom 2 2. 第11章 分布式文件系统 - 2 2.1.  常见的分布式文件系统有,G
  7. Atitit.swt 线程调用ui控件的方法
  8. Atitit. 构造ast 语法树的总结attilax oao
  9. paip.python错误解决6
  10. paip.c++程序崩溃的汇编级别调试-打印堆栈-gcc gdb