MySQL字符集(编码格式相关)

javaweb:

JDBC连接数据库时设置字符集(编码格式)

没试,为了将来留个记号
// Load the JDBC-ODBC bridge driver
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) ;

   // setup the properties 
   java.util.Properties prop = new java.util.Properties();
   prop.put( " charSet " , " Big5 " );
   prop.put( " user " , username);
   prop.put( " password " , password);

   // Connect to the database 
   con = DriverManager.getConnection(url, prop);

前后端数据编码格式不同的转换

问题

>前端传过来的数据是乱码,原因是”编码格式“不一样,我用的是UTF-8
UTF-8下看其他编码格式:
        iso-8859-1-->é??é??è?????
        gbk---------->浣犲ソ

string存在于内存中时编码格式是UTF-16 Character (Java Platform SE 6)

解决办法

new String(s.getBytes("iso-8859-1"),UTF-8);//String构造方法,第二个参数是编码格式
/*getBytes(String charsetName)使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中*/

Mysql四个等级默认字符集设置不相同的处理办法

Mysql数据库的编码分为四级:

    1、Mysql数据库服务器编码;
         (在相应的配置文件中,需要修改配置文件)
    2、Mysql数据库编码;
         (可以在创建的时候指定,也可以在创建之后进行修改)
    3、Mysq数据库中表的编码;
         (可以在创建的时候指定,也可以在创建之后进行修改)
    4、Mysql数据库表中字段的编码;
        (可以在创建的时候指定,也可以在创建之后进行修改)

设置Mysql中的编码

修改表table的编码:alter table table_name default character set utf8
显示数据库表中的字符集设置以及创建数据库的脚本信息
    show create table t1; 

设置表的编码:
    alter table table_name default character set utf8

显示数据库表中字段的字符集设置
    show full columns from t1;

设置字段的编码
    根据字段限制:
        alter  table table_name change old_filed_name 
        new_filed_name varchar(20) 
        not null default 'abc' character set utf8;
    eg:alter  table licensey change yid yid varchar(20) character set utf8;//没有的字段限制就不写

当前联接系统参数  //在MySQL Server 5.5\bin\my.ini 中存储
    show variables like 'char%'或show variables like 'character%'
    +--------------------------+------------------------------+
    | Variable_name            | Value                        |
    +--------------------------+------------------------------+
    | character_set_client     | utf8                         |
    | character_set_connection | utf8                         |
    | character_set_database   | utf8                         |
    | character_set_filesystem | binary                       |
    | character_set_results    | utf8                         |
    | character_set_server     | gbk                          |
    | character_set_system     | utf8                         |
    | character_sets_dir       | C:\MySQ\share\charsets\      |
    +--------------------------+------------------------------+
    8 rows in set (0.00 sec)

设置value与前台页面的字符编码一致(我的理解是:我进行中文字符串操作的地方)

    set names gbk;

    mysql> show variables like 'character%';
    +--------------------------+------------------------------+
    | Variable_name            | Value                        |
    +--------------------------+------------------------------+
    | character_set_client     | gbk                          |
    | character_set_connection | gbk                          |
    | character_set_database   | utf8                         |
    | character_set_filesystem | binary                       |
    | character_set_results    | gbk                          |
    | character_set_server     | gbk                          |
    | character_set_system     | utf8                         |
    | character_sets_dir       | C:\MySQ\share\charsets\      |
    +--------------------------+------------------------------+
    8 rows in set (0.00 sec)

    设置前:
        mysql> insert into licensey (yjyfw,ytimestart,jname)
               values ('麻醉药品','2016-01-08 00:00:00',170);
        ERROR 1366 (HY000): Incorrect string value: 
                        '\xC2\xE9\xD7\xED\xD2\xA9...' for column 'yjyfw' at row 1
    设置后
        mysql> insert into licensey (yjyfw,ytimestart,jname)
                values ('麻醉药品','2016-01-08 00:00:00',170);
        Query OK, 1 row affected (0.05 sec)

用SQLyogSQLyog桌面图标右键选择改变数据库就可以看到对应数据库的基字符集和排列规则

建表时可以设置字符集(编码格式)

create table时可以在末尾后面加上:
1. default character set utf8;
2. default charset=utf8;
列在创建的时候设置字符集就放在列的末尾:filed_name varchar(20) character set utf8

create table table_name(
          filed_name varchar(20) character set utf8  
  )default character set utf8;

感谢:ACMAIN_CHM大大和LOFTER的无影大大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值