我的mysql表是UTF-8编码的
我现在想读数据库,以unicode(utf-16)编码读取
我先mysql_query(m_mysql,"SET NAMES ucs2");但是在mysql_fetch_row(result)这里就为NUlL..
换成SET NAMES UTF8也一样为空用SET NAMES GBK或GB2312就完全没问题?
我哪里出问题了。求解!

解决方案 »

  1.   

    确认一下你的表的编码。
    参考下贴中的方法贴出你的检查结果
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    show full columns from lrcdb
    各个表字段都是UTF8_general_cishow variables like 'char%' 
    都是UTF-8 除了filesystem是binary不能上传附件啊。没法贴图
      

  3.   

    我用SHOW COLLATION查看了我Mysql支持的字符集
    也有USC2啊。
      

  4.   

    既然server端是utf8,那你客户端使用set names gbk就可以了,因为你的客户端应用本身采用的就是代码页cp936,是属于gbk的。弄成utf8,反面不对了。
    server端可以实现gbk到utf8的自动转换。
      

  5.   

    这样的啊...
    可是我想从数据库读出所有数据到内存中,以unicode(utf-16)存储..以map表的方式存储在内存中...
    现在我的代码都是以gbk编码来做的,处理不了韩语和日语..
    我想用utf-16存在map表,然后查找的时候,也使用utf-16编码来查!
      

  6.   

    你如果想同时处理日文和韩文,你的代码得用unicode编译,对吗?
    那样的话,得经过严格测试。谨慎怀疑是否能同时支持。作为客户端应用而言,似乎不需要这么用。
      

  7.   

    回iihero
    我是linux下的服务器程序。
    我是要用Unicode编译,如果我全做成unicode的话,我现在就是很难改...
    现在,因为我的编码都是使用的gb2312,所以不支持韩语和日语!!但是需求是需要支持
      

  8.   

    我现在以SET NAMES ucs2读取数据库中的数据到内存中,除了数字和英文全是乱码郁闷啊,为了国际化,好难弄啊
      

  9.   

    如果要显示出正确的值,得转换成你的linux下的locale对应的字符集才行。