各位请指教'    我现在做一个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.   

    日文的我没做过,不过中文的我倒是做过的。
    在处理中文的时候,你一定要把my.ini里面的配置,你创建数据库时所选的字符集,你创建表时所选的的字符集一定要统一的,我处理的时候都是统一设置为utf8的,不知道这个对你有没有帮助。
      

  2.   

    多谢指点.
    但数据库这边, 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
      

  3.   

    推荐使用UTF-8字符集,基本支持所有的字符集。
    latin1 是mysql默认的字符集,你可以修改my.cnf文件来改变字符集,
    也可以在创建数据库,表,甚至字段是指定字符集,具体可以查看mysql官方文档,非常详细。
    日文的没有做过,不过思路应该是一样的。
      

  4.   

    http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77-8895-9930bf3601af.html
      

  5.   

    这个问题的解决, 最终还是只靠修改 PHP那边的数据存储设定了. 具体就是让PHP在数据库中存成SJIS的, 和VB的缺省的一致.