Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 5998|回复: 7

解决mysql5中文乱码问题的方法

[复制链接]

该用户从未签到

发表于 2009-2-12 09:17:05 | 显示全部楼层 |阅读模式
lazarus的mysql5编程老是会遇到中文乱码的问题,很是头疼。研究发现,问题是mysql5和的字符集和连接它所使用的字符集不匹配引起来的,后来又尝试了N种方法,最后发现了,只要在连接后再配置一遍字符集就可以了。
  1.   conn_mysql.CharSet := PChar('utf8');
  2.   conn_mysql.DatabaseName := 'device_monitor';
  3.   conn_mysql.HostName := '127.0.0.1';
  4.   conn_mysql.UserName := 'root';
  5.   conn_mysql.Password := '123456';
  6.   conn_mysql.open;
  7.   query.Close;
  8.   query.SQL.Text := 'SET NAMES utf8';
  9.   query.ExecSQL;   
复制代码
回复

使用道具 举报

该用户从未签到

发表于 2009-2-12 17:39:07 | 显示全部楼层
这是mysql的一种强大的机制,一般建议在创建数据库和表的时候,数据库底层使用utf8编码,
一般看看my.cnf 里面,是这样的:
[mysqld]
default-character-set=utf8
这样配置后,mysql客户端想用什么字符集都可以,比如我是一个windows下面用lazarus开发的软件,要连接这个数据库,因为windows下面locale为gbk,所以只要在连接数据库的时候,用 "set names gbk" 告诉服务器,我需要gbk编码的数据,这样一来mysql服务器在查询数据后,发送到客户端会自动调用mysql系统的icon函数,iconv(utf8,gbk),
同样,如果有个web程序需要访问这个数据库,html是utf8编码的,只要在脚本那里运行 "set names utf8",数据库明白,你需要utf8编码的数据,ok,我不用编码,直接把数据发给你.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-25 00:05:03 | 显示全部楼层
谢谢楼主你的分享.

回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-10-14 22:32:56 | 显示全部楼层
请问这样读出来的会不会跟sqlite3一样字符类型会少一些内容?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-11-24 21:03:10 | 显示全部楼层
谢谢楼主!学习了!一直很头疼这个汉字编码问题!乱七八糟
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-8 17:51:43 | 显示全部楼层
query.SQL.Text := 'SET NAMES utf8';

这个是关键!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-12-2 12:54:42 | 显示全部楼层
access数据库能否用这样的方法快速解决?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-12-27 12:28:02 | 显示全部楼层
好像这两句任意运行一句就可以了

这句在连接前用 :conn_mysql.CharSet := PChar('utf8');
  
这句在连接以后用:query.SQL.Text := 'SET NAMES utf8';
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 23:06 , Processed in 0.030672 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表