create table if not exists devs (
DevSN                    int                           not null  ,
DevName                  VARCHAR(37)                   null  ,
.......
PRIMARY KEY (DevSN)
)DEFAULT CHARSET=utf8;vc程序读写数据库常用字没有问题,但是写生僻字就不行了都是乱码。但是用mysql-front执行同样的语句就是好的这个怎么解决??

解决方案 »

  1.   

    GBK好像是最全的
    gb2312不包含生僻字
      

  2.   

    UTF8应该是包含比较全的字符集了。 应该是你的VC代码中没有设置字符集的原因。VC中执行一下SET Names 'gbk'; 或者直接在连接属性中设置一下。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  3.   

    谢谢各位ACMAIN_CHM,我看了你的博客以下不是很明白MySQL中关于连接环境的字符集设置有  Client端,connection, results 通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,结果集应该是什么字符集。
    connection 是指 连接数据库用“Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=UTF8”么Client端,results  在my.ini或my.cnf中设置
    [mysql]
    default-character-set=gbk 
    么?
      

  4.   

    SET NAMES显示客户端发送的SQL语句中使用什么字符集。因此,SET NAMES 'cp1251'语句告诉服务器“将来从这个客户端传来的信息采用字符集cp1251”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一个SELECT语句,它表示列值使用了什么字符集。)SET NAMES 'x'语句与这三个语句等价:mysql> SET character_set_client = x;mysql> SET character_set_results = x;mysql> SET character_set_connection = x;
    对于mysql客户端,如果你希望使用与默认字符集不同的字符集,不需要每次启动时执行SET NAMES语句。可以在mysql语句行中或者选项文件中添加一个--default-character-set选项设置。
    除了以上,还要注意客户端的显示编码,如linux gnome-terminal设置不同编码,当然这和MySQL设置无关了
      

  5.   

    --查看数据库的字符集 
    show variables like 'character\_set\_%'; 
    show variables like 'collation_%'; 
    --设置数据库字符编码 
    set names 'GBK' 
    或者charset gbk
    alter database payment character set GBK; 
    create database mydb character set GBK; 
    set character_set_client=gbk; 
    set character_set_connection=gbk; 
    set character_set_database=gbk; 
    set character_set_results=gbk; 
    set character_set_server=gbk; 
    set character_set_system=gbk; 
    set collation_connection=gbk; 
    set collation_database=gbk; 
    set collation_server=gbk;