这两天在学习webpy,把webpy的一个blog例子扒下来学习一下,默认创建的table当存入中文的时候是乱码,研究了一下这个问题。

1,创建table的时候就使用utf8编码

举个例子:

 create table entries2 (
id int auto_increment,
title text,
content text,
posted_on datetime,
primary key (id)
) character set = utf8;

在每次创建表的时候都在最后加上

  character set = utf8

就可以很好的支持中文。

2,修改已经有的table的编码

当使用默认编码创建了一个table的时候,是不能支持中文的,这时候使用如下语句对table_name进行修改:

alter table table_name convert to character set utf8;

此后再往这个table插入中文的时候,就可以正常存储和读取了,但不知道为什么之前的乱码还是不能纠正,只能新插入的数据没有问题。

[注意]  我google了一下,有些地方说这个命令也行,但是我测试以后并不行

alter table table_name charset=utf8;   #这个语句并没有让table_name支持中文

修改table编码前:

修改为utf8后并插入一行数据:

可以看到已支持中文,但之前的3行还是没有改变。

3,修改table中一个column的编码

这个我目前还没发现需要在实际中使用到,但是测试了很多次,语句如下:

alter table entries modify title mediumtext character set utf8;

其中entries是我的table名,title是我要修改的column字段,mediumtext是title的类型。

即使是修改table某个字段的编码,也没有做到让之前的乱码变成中文。

4,如何查看一个database,一个table的编码

查看database的编码,假如database名字为webpy:

show create database webpy;

查看一个table的编码,假如table名为entries2:

show create table entries2;

效果如下,其实表中每个字段编码都是utf8,表的default的utf8的,所以没有单独显示每个字段的。

5,修改mysql的配置文件,让mysql默认编码为utf8

在我的ubuntu机器上,mysql的配置目录为/etc/mysql

而我们mysql使用的配置文件为

  /etc/mysql/my.cnf

我们可以直接加在my.cnf中,当然为了方便移植可复用,也可以如下写在独立的配置文件中。

在my.cnf最后又include了 conf.d/ 下面所有的*.cnf文件,所以我们就在conf.d/下面加上一个我们自己的配置文件wy_sql.cnf

添加如下两行

[mysqld]
character-set-server=utf8

再创建表的时候默认编码就是utf8了。

6,    显示的问题

上面改了服务器的字符编码,但是如果不改client的,在终端上显示的还是???

还需要在配置文件中加上

[client]
default-character-set=utf8

通过

show variables like '%char%'

可以查看

和编码  "character" , 有关的变量

 Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |

7, 直接在mysql中使用 set 设置 变量

上面我们用show 查看了一些变量的值

那么可以直接用set来设置,但是这是临时的,下次启动后还是以配置文件的为准

set  character_set_result = utf8;

让MySQL支持中文的更多相关文章

  1. Mysql支持中文全文检索的插件mysqlcft-应用中的问题

    MySQL目前版本的全文检索没有对中文很好的支持,但可以通过安装mysqlcft插件来实现,具体的安装使用方法:http://blog.s135.com/post/356/ mysqlcft的官方网站 ...

  2. mysql 支持中文,防止程序乱码的方法

    1. 查看你的mysql的字符设置 mysql> show variables like 'character%'; +--------------------------+---------- ...

  3. CentOS7 mysql支持中文

    # vim /etc/my.cnf # For advice on how to change settings please see# http://dev.mysql.com/doc/refman ...

  4. Mysql忘记密码,支持中文,tab补全

    忘记Mysql密码: (1)暂停服务: /etc/init.d/mysqld stop (2)跳过grant表授权,进入安全模式,并在后台运行: mysqld_safe --skip-grant-ta ...

  5. Ubuntu 15.04下MySQL 5.6.25不支持中文解决办法

    Ubuntu 15.04下MySQL 5.6.25不支持中文解决办法,apt-get install 安装的,不是源码包安装的mysql. 1 修改mysql的配置文件 /etc/mysql/conf ...

  6. [flask实践] 解决mysql数据库不支持中文的问题

    接上一篇文章,在解决了mysql+flask环境配置问题之后,往数据库存中文字符串会报1366错误,提示不正确的字符.继而发现默认的mysql采用了Latin1字符集,这种编码是不支持中文的. 如果想 ...

  7. mysql设置编码格式--支持中文

    创建table的时候就使用utf8编码 在每次创建表的时候都在最后加上 character set = utf8就可以很好的支持中文 create table xxx ( id int auto_in ...

  8. MySQL为什么不支持中文排序?

    前言 或许都知道,MySQL不支持中文排序,这样的说法可以说对也可以说也不对.接下来我们分析一下: 首先执行命令,查看编码集: SHOW VARIABLES LIKE 'character_set%' ...

  9. [django]Django站点admin支持中文显示和输入设置

    正文: Django站点admin支持中文输入设置,操作如下: 1 需要确定的你的数据库的client客户端和服务端的编码设置为utf-8,如果不是,请将其设置成utf-8编码,我采用mysql,详情 ...

随机推荐

  1. HDU 1372 (搜索方向稍有改变) Knight Moves

    其实手写模拟一个队列也挺简单的,尤其是熟练以后. 尼玛,这题欺负我不懂国际象棋,后来百度了下,国际象棋里骑士的走法就是中国象棋里面的马 所以搜索就有八个方向 对了注意初始化标记数组的时候,不要把起点标 ...

  2. UVa 821 Page Hopping【Floyd】

    题意:给出一个n个点的有向图,任意两个点之间都相互到达,求任意两点间最短距离的平均值 因为n很小,所以可以用floyd 建立出图,然后用floyd,统计d[][]不为0且不为INF的边的和及条数,就可 ...

  3. C语言中的三值合一

    在学习C语言中我们会发现这样一种情况: #include<stdio.h> Int main() { Int ar[10]; printf(“%p\n”,ar); printf(“%p\n ...

  4. unity3d 破解安装

    1.下载破解程序,执行生成unity_v4.x.ulf文件 2.断网 3.执行unity客户端,load该lisence文件即可 注意:安装unity客户端完成后,未破解,切记别打开unity客户端 

  5. equal 和 ==

    刚才看了一下别人的博客,想加深一下对 equal 和 == 的了解. 总结了几点: 1.equal 每个类都有必要覆盖一下,对于String 类,已经覆盖,比较的是String对象的字符序列是否相等. ...

  6. [转] gc tips(1)

    所有应用软件都需要管理内存,一个应用软件的内存管理系统包括了如下准则:什么时候派发内存,要派发多少内存,什么时候把东西放到回收站,以及什么时候清空回收站.MMgc是Flash Player几乎所有内存 ...

  7. vm虚拟机挂载usb

    首先得保证能在VM里看到usb设备,如图

  8. requirejs之demo (转)

    具体的理论就不讲了,可以参考 http://www.ruanyifeng.com/blog/2012/10/javascript_module.html http://www.ruanyifeng.c ...

  9. JBPM4之decision节点:2、好学生|坏学生|超级学生

    JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件 JBPM4入门——3.JBPM4开发环境的搭建 JBPM4入门—— ...

  10. Gridview点击Edit编辑未update和cancel后的问题

    在使用GridView时无意中发现一个问题: 第一步:点击列表中的某一行的"Edit"(例如第一行数据), 第二步:点击下一页,于是在下一页数据加载完成后就会看到对应的行(与第一步 ...