大家好,目前我通过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 建立视图的问题
- 为什么我新建了表以后,妖往表中添加数据却出错????
- JDBC连接MySql数据库的版本问题?
- SQL更新语句求解 如果要更新的值为负数,如何将要更新的值变成0
- 求累加sql写法
- mysql中的字符串类型是怎么个情况
- 交学费,问个关于用psql语句导出数据的问题
- 请教如何解决用DevC++工具使用MySQL C API连接MySQL的出错问题。
- linux 下mysql 1045问题
- 安装mysql后,过一会目录空了!!求解
- 连接postgresql中出现Ident authentication failed for user (求解)
- 处理中文乱码大师级的人进~~~
写入之前SET NAMES utf8
读取之前SET NAMES utf8