各位请指教' 我现在做一个VB/PHP/MYSQL的项目, 对日的. 现在面临着乱码问题, 具体说是 VB和PHP程序不能正常显示对方做成的数据(日语汉字字段).
具体说明
1. MYSQL的VERSION
5.0.22
2. 字符集设置
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
3. MY.INI文件没有, 只有MY.CNF文件.
[root@sv etc]# more my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1[mysql.server]
user=mysql
basedir=/var/lib[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4.PHP 程序插入数据时, 进行 SJIS->EUC-JP的转换, 表示时进行相反转换. PHP显示PHP的日语汉字没有问题.
5.VB的程序插入数据时, 没有进行转换. VB显示VB做的数据中的日语汉字也没有问题.
6.现在的问题是VB和PHP之间不能正常显示对方做成的数据中的日语汉字.
如果PHP程序插入数据时, 不进行任何转换的话, 双方可以正常显示对方做成数据中的日语汉字.现在LEADER的要求是, 数据库中就是要存EUC-JP, PHP和VB要能正常显示对方做成的日语汉字数据●●以下几点不明白, 请高人指点
1. 字符集中的latin1, 现在明白是欧洲的字符集, 如果要进行我们亚洲的多字节数据存储, 是不是必须要改变成别的相应字符集?
是指 character_set_database | latin1
2. 建表时, 是不是必须指定该表的缺省字符集为相应的字符集, 如日语的UJIS,即EUC-JP
因为, 我用SHOW TABLE STATUS 查看各表情况时, 发现均为 latin1
3. 配置文件, 需要做什么其它设定.以上.
具体说明
1. MYSQL的VERSION
5.0.22
2. 字符集设置
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
3. MY.INI文件没有, 只有MY.CNF文件.
[root@sv etc]# more my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1[mysql.server]
user=mysql
basedir=/var/lib[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4.PHP 程序插入数据时, 进行 SJIS->EUC-JP的转换, 表示时进行相反转换. PHP显示PHP的日语汉字没有问题.
5.VB的程序插入数据时, 没有进行转换. VB显示VB做的数据中的日语汉字也没有问题.
6.现在的问题是VB和PHP之间不能正常显示对方做成的数据中的日语汉字.
如果PHP程序插入数据时, 不进行任何转换的话, 双方可以正常显示对方做成数据中的日语汉字.现在LEADER的要求是, 数据库中就是要存EUC-JP, PHP和VB要能正常显示对方做成的日语汉字数据●●以下几点不明白, 请高人指点
1. 字符集中的latin1, 现在明白是欧洲的字符集, 如果要进行我们亚洲的多字节数据存储, 是不是必须要改变成别的相应字符集?
是指 character_set_database | latin1
2. 建表时, 是不是必须指定该表的缺省字符集为相应的字符集, 如日语的UJIS,即EUC-JP
因为, 我用SHOW TABLE STATUS 查看各表情况时, 发现均为 latin1
3. 配置文件, 需要做什么其它设定.以上.
解决方案 »
- mysql 中怎么返回多项结果,结果中包括查询参数
- 如何实现点击按钮后,从MYSQL数据库导出XLS文件并提示下载另存
- c语言连接mysql数据库问题,求大神,急!!!
- mysql数据库备份问题
- Mysql的弱弱问题
- 这个问题我连续问了3天了,为什么没人踩呢?大家都不会吗?----postgresql中是否会超时自动断开连接?
- 通过MYODBC连接mysql,在查询时候中文出错(今晚结贴,参与有分,指点迷津者令有高分相送)……
- mysql在linux下安装,请问怎么卸载呀,我想重新装
- 有没有人使用过Galera的多主同步集群的,性能稳定性怎样
- 求大牛帮忙解决一个数据库问题,详情见内容,谢谢!!!
- 急:怎样写mysql 有返回结果集的存储过程
- 在线求助mysql分组后取最大值
在处理中文的时候,你一定要把my.ini里面的配置,你创建数据库时所选的字符集,你创建表时所选的的字符集一定要统一的,我处理的时候都是统一设置为utf8的,不知道这个对你有没有帮助。
但数据库这边, LEADER说, 尽可能不变.
他的想法是, 只在VB端进行转换, 比如从EUC-JP,转换成 UNICODE, 或者说 SHIFT-JIS.
他认为PHP在数据库端存成了 EUC-JP的格式, VB端查询到的记录集中也会是EUC-JP的格式了.我现在的疑问是,
1. PHP存的数据, 以数据库目前的设定, 存储的数据格式真的是EUC-JP吗? 现在从NAVICAT工具来看, 只有设成EUC-JP才能正确查看. 似乎是这样的.
2. VB端如何设置, 才能确保, 返回的记录集, 是EUC-JP的格式.
我现在的尝试是, 连接时选项
useUnicode=true& characterEncoding=EUC-JP;另外, 也试着加上
STMT=set names ujis;经试验发现, STMT=set names ujis;这个地方, 如果变的话, 返回的结果确实变化.
但具体不明白, 这个STMT是什么意思, 是不是等价于 执行 SET NAMES XXX
latin1 是mysql默认的字符集,你可以修改my.cnf文件来改变字符集,
也可以在创建数据库,表,甚至字段是指定字符集,具体可以查看mysql官方文档,非常详细。
日文的没有做过,不过思路应该是一样的。