zoukankan      html  css  js  c++  java
  • mysql防止中文乱码小方法

    mysql字符集介绍

    包括两部分 字符集CHARACTER和校对规则COLLATION

                  字符集是用来定义mysql字符串存储的方式

               校对规则是定义比较字符串的方式

    如果数据库存的是多过语言,就用utf8,每个汉字三个字节

    如果只需支持中文,就用gbk,中英文都是占用2字节

    查看mysql的字符集

    show character set;
    简写: show char set;

    查看现有数据库编码设置

    mysql> show variables like '%chara%';
    
    | character_set_client     | utf8  客户端                         |
    
    | character_set_connection | utf8     客户端   连接字符集                  |
    
    | character_set_database   | utf8        数据库字符集                  |
    
    | character_set_filesystem | binary                        |
    
    | character_set_results    | utf8    客户端     返回结果字符集                  |
    
    | character_set_server     | utf8    服务器字符集                      |
    
    | character_set_system     | utf8                          |

    如果mysql不指定的话,客户端的字符集一般和系统一致

    防止乱码方法小结

    不乱码的思想:

    Linux系统  客户端  服务端  库 表  程序

    需要控制以上流程编码一致,防止乱码

    查看 编码设置:

    Show global variables like%chara%’;

    一.Linux系统

    [root@www ~]# cat /etc/sysconfig/i18n
    LANG="en_US.UTF-8"
    SYSFONT="latarcyrheb-sun16"

    二.mysql客户端

    登录mysql 先做set names latin1; 这里的字符设置,要根据要插入表的字符编码,查看方法:(show create table tablename G),然后再执行更新语句,或者插入中文。

    1. 在要执行的sql文件里,第一条添加 set names latin1;
    2. 通过mysql指定编码导入

    Mysql –uroot –p’密码’ --default-charset-set=latin1  test  < test.sql;

    三.mysql服务端

    1. 在配置文件my.cnf里指定编码 重启生效 永久生效
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    default-character-set=utf8(5.1之前的版本)
    character-set-server=uft8 (适合5.5)  中文还是选择utf8

    四.库和表

           创建库和表的时候指定默认的字符编码

    CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
    
    create table my_table (name varchar(20) not null default '') default charset utf8;

    对于已有数据的表,修改字符集的思路

    例如:latin1=>utf8

    1. 导出库和表的创建语句 将编码修改为utf8
    2. 导出所有数据
    3. 删除所有库和数据
    4. 利用新的建表和建库的语句创建新的库和表
    5. 导入数据
  • 相关阅读:
    摄像机模型 (Camera Model)
    TP中如何用IF
    Mysql连接报错:1130-host ... is not allowed to connect to this MySql server如何处理
    LNMP环境源码搭建
    Linux之不得不说的init(Linux启动级别的含义 init 0-6)
    PHP 生成毫秒时间戳
    Linux Bash Shell字符串截取
    Linux crontab任务调度
    下载百度文库文档
    关于java socket中的read方法阻塞问题
  • 原文地址:https://www.cnblogs.com/lazyball/p/8662814.html
Copyright © 2011-2022 走看看