`
xiaobo.liu
  • 浏览: 40160 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

mysql 字符集研究与测试

 
阅读更多

    mysql默认字符集设置

 

mysql> show variables like '%character%';
+--------------------------+-------------------------------------------------+
| Variable_name            | Value                                           |
+--------------------------+-------------------------------------------------+
| character_set_client     | gbk                                             |
| character_set_connection | gbk                                             |
| character_set_database   | latin1                                          |
| character_set_filesystem | binary                                          |
| character_set_results    | gbk                                             |
| character_set_server     | latin1                                          |
| character_set_system     | utf8                                            |
| character_sets_dir       | /www/wdlinux/mysql-5.1.63/share/mysql/charsets/ |
+--------------------------+-------------------------------------------------+

    character_set_system = utf8 设置的时mysql的元字符集 比如(表名,库名,sql语句的字符设置),他是只读的,不需要更改。

    character_set_database 设置的时当前选中数据库的字符集,他回随着选择数据库不同而不同

 

use t
mysql> show variables like '%character_set_database%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.00 sec)

 

mysql> use y
Database changed
mysql> show variables like '%character_set_database%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| character_set_database | gbk   |
+------------------------+-------+
1 row in set (0.00 sec)

    character_set_server,当你建库或者见表时没有指定字符集,就是用这个参数设置

 

 

mysql> show create database t;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| t        | CREATE DATABASE `t` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)

 

mysql> show create database y;
+----------+-----------------------------------------------------------+
| Database | Create Database                                           |
+----------+-----------------------------------------------------------+
| y        | CREATE DATABASE `y` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+-----------------------------------------------------------+
1 row in set (0.00 sec)

 

mysql> show create table user;
+-------+-----------------------------------------------------------------------
----------------------+
| Table | Create Table
                      |
+-------+-----------------------------------------------------------------------
----------------------+
| user  | CREATE TABLE `user` (
  `name` char(30) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------
----------------------+
1 row in set (0.00 sec)

mysql> insert into user(name) values("攻城市php");

Query OK, 1 row affected, 1 warning (0.02 sec)

mysql> select * from user;
+--------+
| name   |
+--------+
| ???php |
+--------+
1 row in set (0.00 sec)

    set names 设置是 character_set_client,character_set_connection,character_set_results的字符集,下面我们做个实验,说明这三个参数用处

 

 

mysql> create database b default character set utf8;
Query OK, 1 row affected (0.01 sec)
mysql> show create database b ;
+----------+------------------------------------------------------------+
| Database | Create Database                                            |
+----------+------------------------------------------------------------+
| b        | CREATE DATABASE `b` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> use b
Database changed
mysql> create table user(name char(30));
Query OK, 0 rows affected (0.11 sec)
mysql> show create table user;
+-------+-----------------------------------------------------------------------
--------------------+
| Table | Create Table
                    |
+-------+-----------------------------------------------------------------------
--------------------+
| user  | CREATE TABLE `user` (
  `name` char(30) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------
--------------------+
1 row in set (0.00 sec)
mysql> insert into user(name) values("张三"),("李四");
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from user;
+--------+
| name   |
+--------+
| 张三   |
| 李四   |
+--------+
2 rows in set (0.00 sec)

 

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from user where name='张三';
Empty set (0.00 sec)

 

mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from user where name='张三';
+--------+
| name   |
+--------+
| 张三   |
+--------+
1 row in set (0.00 sec)

 大家可以通过php脚本测试一下,命令行工具一般测不出结果、

mysql> set character_set_results=gbk;
Query OK, 0 rows affected (0.00 sec)

mysql> 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    | gbk                                             |
| character_set_server     | latin1                                          |
| character_set_system     | utf8                                            |
| character_sets_dir       | /www/wdlinux/mysql-5.1.63/share/mysql/charsets/ |
+--------------------------+-------------------------------------------------+
8 rows in set (0.00 sec)

mysql> select * from user where name='张三';
+------+
| name |
+------+
| ÕÅÈý     |
+------+
1 row in set (0.00 sec)

   看看结果,发现是乱码,自己思考一下为什么?

mysql> set password for 'root'@'localhost'=password('*****');  

   最后引用网上的一张图解释下,

 

    eof

 

 

 

  • 大小: 89 KB
分享到:
评论

相关推荐

    详解:Web应用程序中的字符集攻击 PPT

    曾发现php,mysql,IE,以及国内外主流WEB程序的漏洞,现研究对WEB应用程序漏洞挖掘,WEB应用程序代码审核,WEB黑盒安全测试,WEB安全架构研究以及客户端WEB安全等等。 点评: 2008 xKungfoo 峰会上的一篇论文PPT

    c# mysql 应用程序 源代码 经过测试可以运行

    通过研究和理解这段代码,你可以更好地掌握C#与MySQL数据库的交互方式,这对于任何需要处理数据库的C#项目都是非常宝贵的。 总结来说,C#与MySQL的结合使用是通过`MySql.Data.MySqlClient`库实现的,涉及的关键点...

    mysql-5.0.45源代码(可以编译通过)

    10. **编码与字符集**:MySQL 5.0支持多种字符集,包括UTF-8,能够处理多种语言的数据。 11. **编译安装**:下载源代码后,需要通过配置、编译和安装步骤才能在系统中使用。这涉及到熟悉编译工具(如GCC)、配置...

    自己研究的java 安装步骤eclipse-mysql-navicat-tomcat安装.pdf

    7. **配置中文字符集**:为了防止中文乱码问题,需要在MySQL配置文件中设置`character_set_server=utf8`,`init_connect='SET NAMES utf8'`,以及`collation-server=utf8_general_ci`。 ### 其他安装指南 - **...

    php+mysql连接数据库

    - 第二个参数是SQL语句,这里是设置MySQL的字符集为UTF-8。 #### 四、执行查询语句 在成功连接到MySQL数据库后,我们可以执行查询语句来获取数据。 ```php $query = "SELECT * FROM users"; // 查询users表中的...

    在windows下配置Apache+PHP+MySQL

    - 设置字符集为GBK。 #### 四、配置注意事项 - **安装顺序**:建议先安装Apache,再安装PHP和MySQL,这样可以确保各个组件之间的兼容性。 - **环境变量**:安装完成后,记得将Apache、PHP和MySQL的可执行文件目录...

    MYSQL.zip_c# mysql

    本教程将围绕这个主题展开,详细阐述如何在C#环境中与MySQL数据库进行交互。 首先,确保你已经正确安装了MySQL数据库。这包括服务器组件、客户端工具以及可能需要的开发库。安装完成后,你可以通过MySQL Workbench...

    DTM_mk_MySQL Migration Kit—mysql_wp_oracle2mysql

    - **Oracle与MySQL的成本对比**:从许可费用、硬件成本、维护成本等多个角度比较Oracle和MySQL,MySQL通常具有更低的总体拥有成本(TCO)。 - **开源优势**:MySQL作为一款开源数据库系统,其免费版提供了足够的功能来...

    jquery+js +PHP +mysql 实现自动完成功能

    7. **测试与调试**:确保在各种浏览器和设备上正常工作,优化响应时间和数据加载。 这个项目不仅涵盖了前端与后端的交互,还涉及数据库查询和数据传输,是Web开发中一个典型的实战案例。通过这个项目,开发者可以...

    INFA技术超群_中文KB_00029_TDM_Mysql中Longtext字段处理方式

    在Informatica中,TDM通常涉及如何高效地生成、管理和维护测试数据集,特别是在大数据环境中。 #### 知识点三:Mysql中的Longtext字段 **MySQL**是一种广泛使用的开源关系型数据库管理系统(RDBMS),因其高性能、...

    易语言源码mysql学习例程.rar

    在“易语言源码mysql学习例程.rar”这个压缩包中,包含了两个文件:`mysql练习测试.e` 和 `源码使用说明.txt`,它们都是为了帮助用户学习如何使用易语言与MySQL数据库进行交互。 `mysql练习测试.e` 是一个易语言...

    Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结

    - 修改默认字符集:将`AddDefaultCharset ISO-8859-1`改为`AddDefaultCharset GB2312` - 修改默认首页文件:`DirectoryIndex index.html index.jsp index.php default.jsp default.php index.html.var` - 配置404...

    labview_连接各类数据库工具包,MySQL serverSQL Access

    例如,在自动化测试系统中,可以将测试结果实时写入MySQL Server;在科学研究中,可以利用SQL Access接口存储实验数据,便于后续的数据处理和分析。 总之,LabVIEW连接数据库的能力使得它在数据处理方面具有很大的...

    LabVIEWsql测试程序.rar

    LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司...通过研究这个程序,开发者或学习者可以学习到如何在实际项目中集成LabVIEW与数据库的交互,从而提升其在测试测量领域的技能。

    建立社工库 (2).pdf

    - SQL文件可直接通过`source`命令导入,之后调整字符集,并重新创建索引。 - Tab分隔的txt文件,使用`load data infile`命令快速导入。 - 非标准分隔符的txt文件,可以通过Navicat的导入功能处理,或者使用Python...

Global site tag (gtag.js) - Google Analytics