字符集(编码格式相关)

来源:互联网 发布:视频配音软件 编辑:程序博客网 时间:2024/06/06 15:02

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-8UTF-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
原创粉丝点击