大家好,目前我通过linux中的C程序接口mysql_real_query查询mysql中的数据,在mysql中的编码是UTF-8,我自己插入的数据没有问题,可以正常读取出来,我采用单步跟踪调试也确实是UTF-8的编码。
而我同事用Delphi+mydac操作mysql数据库,把mydac设置为UTF-8,他通过Delphi程序插入,然后读取出来的汉字都是正常的,如果不这么设置就是乱码。而我通过mysql_real_query查询他插入的汉字数据时,却是问号!且一个汉字对应一个问号。按照我的理解,即使编码不对也不应该一个汉字只有一个字节,用单步跟踪查看时确实是63,‘?’。这是怎么回事?
还有一点,我的系统是Opensuse10.2,在终端上登录了Redhat9.0的开发服务器,然后开发调试程序,我直接用mysql命令登录到mysql数据库,手动运行select * from table的命令,却可以正常显示通过Delphi程序插入的汉字!而我自己插入的UTF-8是乱码。我的终端已经设置字符编码为UTF-8了,并且我也尝试了GB18030、GBK、GB2312都无法正常显示我插入的汉字,而实际在代码中调试时可以看到是三个字节的UTF-8编码数据的。这又是怎么回事?我另外一个同事用的是Fedora7,他也通过终端登录到Redhat9.0的开发服务器(跟我登录的是同一台),他的终端也设置字符编码是UTF-8,但是他的mysql命令行却可以正常显示我插入的数据,而Delphi插入的数据他看到的是问号!与我通过代码读取的结果一致。
不太明白,为何我插入的肯定是UTF-8的编码的汉字在我的终端上为何乱码?而Delphi插入的数据就算不是UTF-8是其他的GB2312什么的编码,一个汉字最少也应该是两个字节,而现在仅仅是63,是什么原因呢?
google了一下,发现有很多mysql中文出现问号的情况,但都是客户端连接配置问题,与我这个不同,Delphi程序写入、读出都正常,对我写入的数据却是乱码;我读Delphi的程序却是问号,真是很奇怪!希望高手能指点一下。
高分酬谢
而我同事用Delphi+mydac操作mysql数据库,把mydac设置为UTF-8,他通过Delphi程序插入,然后读取出来的汉字都是正常的,如果不这么设置就是乱码。而我通过mysql_real_query查询他插入的汉字数据时,却是问号!且一个汉字对应一个问号。按照我的理解,即使编码不对也不应该一个汉字只有一个字节,用单步跟踪查看时确实是63,‘?’。这是怎么回事?
还有一点,我的系统是Opensuse10.2,在终端上登录了Redhat9.0的开发服务器,然后开发调试程序,我直接用mysql命令登录到mysql数据库,手动运行select * from table的命令,却可以正常显示通过Delphi程序插入的汉字!而我自己插入的UTF-8是乱码。我的终端已经设置字符编码为UTF-8了,并且我也尝试了GB18030、GBK、GB2312都无法正常显示我插入的汉字,而实际在代码中调试时可以看到是三个字节的UTF-8编码数据的。这又是怎么回事?我另外一个同事用的是Fedora7,他也通过终端登录到Redhat9.0的开发服务器(跟我登录的是同一台),他的终端也设置字符编码是UTF-8,但是他的mysql命令行却可以正常显示我插入的数据,而Delphi插入的数据他看到的是问号!与我通过代码读取的结果一致。
不太明白,为何我插入的肯定是UTF-8的编码的汉字在我的终端上为何乱码?而Delphi插入的数据就算不是UTF-8是其他的GB2312什么的编码,一个汉字最少也应该是两个字节,而现在仅仅是63,是什么原因呢?
google了一下,发现有很多mysql中文出现问号的情况,但都是客户端连接配置问题,与我这个不同,Delphi程序写入、读出都正常,对我写入的数据却是乱码;我读Delphi的程序却是问号,真是很奇怪!希望高手能指点一下。
高分酬谢
解决方案 »
- mysql 向表中加数据时 提示这个错。,帮分析一下。谢
- 怎么求结果集不同元素的个数
- Linux中不能建立存储过程
- 请教一个关于mysql排序 很耗时的问题
- 请教,这个错误是不是数据库没连上呀?
- 请问:postgresql中如何执行一个脚本文件?
- [求助]mysql连接速度问题
- select * from table01 where field01 in (select field01 from table02)为什么错了
- 连接问题,谢谢
- 笔试题:影响sql执行效率的因素都有哪些?
- 连接postgresql中出现Ident authentication failed for user (求解)
- 处理中文乱码大师级的人进~~~
写入之前SET NAMES utf8
读取之前SET NAMES utf8