1o.i+w0c(Eyus^7r0+------------------------------------------------------+
9y1_H.N G(u/`#fs
}0+ 以下内容为本人原创,共享以赏读者,转帖时请保留该信息 +
P1FwBs^Na X
dn0+ yeyanbo yeyanbo@hotmail.com +LUPA开源社区ZZ)j$[AA3b
+ http://yeyanbo.lupaworld.com +LUPA开源社区-o8_
JB`)izp"{t a
+------------------------------------------------------+ LUPA开源社区1x*F+}1Aabc8RZ/X,g
/b)L'I6LD$dqS6q(b0使用Delphi7, MyODBC 3.5连接MySQL 5.0, 数据库字符集设置为GBK, 居然出现乱码!!! LUPA开源社区9W Fg
j(|g#[1I
解决方法:LUPA开源社区0j%p}%Pgk
1)设置ODBC中, Advanced-->Flag 3-->Read Options From my.cnfLUPA开源社区7rY)g\ H8v6X
2)将以下内容保存为%windir%\my.cnf(注意:是WINDOWS系统目录)
3Lbp&tJv%pB~0你可以将下面的内容复制保存成文件即可.
4\o
G F+P&p'sb0[client]
*_N1@*@xr,E&N iA0default-character-set=gbk(gb2312)
r Y%ET%K&b0以上是利用一个配置文件进行的处理.在发布程序的时候比较难处理.
LUPA开源社区G+g'XCOx|'H.F
---------------------------------------------------------------------------------------
-a xy"zx"S0下面这个方法不用利用配置文件,可以在创建完数据连接之后执行.
LUPA开源社区mbX$b[So1? RQ
//"SET NAMES GB2312"的作用相当于LUPA开源社区n8S u2{5V~(O
//SET character_set_client = GB2312;LUPA开源社区B.z!rr;]*d
//SET character_set_results = GB2312;
7wU,c R Ue0 //SET character_set_connection = GB2312;
q3mUl"h0o;k0 ADOQuery1.Close();
+y|4w3I
t1j,`/Rl0 ADOQuery1.SQL.Text := 'SET NAMES GB2312;';LUPA开源社区|pnN*S8`o.q4l
ADOQuery1.ExecSQL();
0s)|XX
~ V ` D0 //当将此句注释掉的话,存入数据库的内容变为乱码LUPA开源社区qq'[$Ng&h
ADOQuery1.Close();
7lA+i&r#sU
v,C0 ADOQuery1.SQL.Text := 'SET character_set_client = GB2312;';LUPA开源社区o:SIB)K
ADOQuery1.ExecSQL();
LUPA开源社区(B|wT,L8r9UD{
//当将此句注释掉得话,从数据库中读取的内容为乱码
r"g\z"]d0{0 ADOQuery1.Close();LUPA开源社区.\;P4M.\,y$Mq
ADOQuery1.SQL.Text := 'SET character_set_results = GB2312;';LUPA开源社区*D r4h{)N2r
ADOQuery1.ExecSQL();
][
|S2{9a0 //当将此句注释掉的话,存入数据库的内容变为乱码LUPA开源社区
v?X*wh-]R
ADOQuery1.Close();
&aD PWN0 ADOQuery1.SQL.Text := 'SET character_set_connection = GB2312;';LUPA开源社区#SJ&y!bF2FJ4g
ADOQuery1.ExecSQL();LUPA开源社区6T.X
C |9KDz9p