http://www.cnblogs.com/livingintruth/p/3433259.html

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

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

举个例子:

1 create table entries2 (
2 id int auto_increment,
3 title text,
4 content text,
5 posted_on datetime,
6 primary key (id)
7 ) 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. navicat for mysql 显示中文乱码解决办法

      最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题就的寻求解决之道,百度了好长时间也没解决,网上那些解决办法 ...

  2. Navicat for mysql 显示中文乱码问题

    使用navicat for mysql 打开数据库时,使用Console插入和查询数据显示乱码 处理过程 1.查看数据库编码为" utf8 -- UTF-8 Unicode",也就 ...

  3. 转】MySQL客户端输出窗口显示中文乱码问题解决办法

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4008095.html 感谢! 最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显 ...

  4. 解决Linux系统下Mysql数据库中文显示成问号的问题

    当我们将开发好的javaWEB项目部署到linux系统上,操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题! 打 ...

  5. MySQL客户端输出窗口显示中文乱码问题解决办法

    最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示:

  6. mysql 不能插入中文和显示中文

    一)不能显示中文解决办法: 参考:http://bbs3.chinaunix.net/thread-880131-1-1.html 1:windows平台,因为windows操作系统默认的是用了gb2 ...

  7. linux mysql命令行查看显示中文

    linux 命令行查看mysql的库字符集是utf8,查询某个表时,仍然是显示不了中文, 之后使用了命令 mysql>set  names utf8;就可以正常显示中文了. 如何才更好的使mys ...

  8. window系统mysql无法输入和无法显示中文的处理配置

    第一步:使用记事本打开mysql安装目录下的"my.ini”文件. # MySQL client library initialization. [client] port= [mysql] ...

  9. mysql 5.7 显示中文

    思路: 那网页xxx.php的工作过程就是这样的啦:从xxx.php页面上输入汉字,因为xxx.php是UTF8编码的,所以xxx.php以UTF8格式转换输入的汉字,然后以UTF8提交给mysql, ...

随机推荐

  1. 纯CSS实现下拉菜单及下拉容器等(纯CSS实现导航条及导航下拉容器)

    虽然网上类似甚至相同的案例有很多,但是我还是写下,以记下笔记,也可供大家参考 希望大家可以指导批评~~ 首先我们以列表ul li 来开始我们菜单也可以说导航条的制作: 在页面中我们首先构建以下XHTM ...

  2. drop表后仍占表空间解决办法

    练习oracle时create了很多表,drop表后select * from tab; 网上找了好些方法,但是好多都适用... SQL>purge recyclebin; 回收站已清空.

  3. iOS程序上传流程 2014年9月最新版

    程序上传步骤: 1.登录账户,点击Manage Your Apps 2.点击Add New App 3.注册Bundle ID,点击蓝色的here 4.进入了注册页面,首先要填写App ID的一个描述 ...

  4. iOS 面试题(三):为什么 weakSelf 需要配合 strong self 使用 --转自唐巧

    问题 继续回答昨天的问题第二问. 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: __weak typeof( ...

  5. iOS开发中的权限

    权限分类 联网权限 相册权限 相机.麦克风权限 定位权限 推送权限 通讯录权限 日历.备忘录权限 联网权限 引入头文件 @import CoreTelephony; 应用启动后,检测应用中是否有联网权 ...

  6. PDO和消息队列的一点个人理解

    什么是消息队列,百度百科说,···消息队列····是在消息的传输过程中保存消息的容器. 看着网上林林总总的文章,都说是为了应对高并发,处理数据量超级大的一种数据容器,也可以说是利用各种方式,先把数据存 ...

  7. SQLite如何测试

    原文 http://www.sqlite.org/testing.html 目录 1. 介绍 1.1. 执行总结 2. 测试套件 3.异常测试 3.1 内存溢出测试 3.2 I/O错误测试 3.3 c ...

  8. New line

    The concepts of line feed (LF) and carriage return (CR) are closely associated, and can be either co ...

  9. yii框架的理解

    Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一. yii框架里 ...

  10. VitualBox环境下,实现windows系统与虚拟机Linux文件互传

    本次环境是Win7系统和ubuntu14(虚拟机) 1.首先需要安装VitualBox的增强功能,如图所示 2.安装完成后重启linux系统,然后在WIN7系统下创建共享文件夹(本文在D盘下创建名为V ...