`
minmai
  • 浏览: 29604 次
社区版块
存档分类
最新评论

mysql set names

阅读更多
开发过程中,最好明确使用何种字符集
使用:set names 'x' 来明确

A SET NAMES 'x' statement is equivalent to these three statements:

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;

这样对于数据库端设置的依赖性将大大降低。

root@xxx>show variables like '%char%';
+--------------------------+----------------------------------+
| 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       | /u01/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

root@xxx>set names 'utf8';

root@xxx>show variables like '%char%';
+--------------------------+----------------------------------+
| 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       | /u01/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------+

SET NAMES显示客户端发送的SQL语句中使用什么字符集。因此,SET NAMES 'cp1251'语句告诉服务器“将来从这个客户端传来的信息采用字符集cp1251”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一个SELECT语句,它表示列值使用了什么字符集。)

SET NAMES 'x'语句与这三个语句等价:

mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET character_set_connection = x;
将x设置为character_set_connection也就设置了collation_connection是x的默认校对规则。

SET CHARACTER SET语句是类似的,但是为 默认数据库设置连接字符集和校对规则。SET CHARACTER SET x语句与这三个语句等价:

mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET collation_connection = @@collation_database;
当一个客户端连接时,它向服务器发送希望使用的字符集名称。服务器为那个字符集设置character_set_client、character_set_results和 character_set_connection变量。(实际上,服务器为使用该字符集执行一个SET NAMES操作。)

###############
有一种情况请关注下: 在操作系统不是中文,但是又想把从其他环境dump的文件放进去,有可能出现的一种状况是,放上去的文件很难识别,导致insert的数据直接查询会是乱码。 应用如果不健壮(没有在客户端设置明确的字符集‘set nanme ..'的话,也会存在问题。 那请将dump出来的文件保存为ASNI/ASCII类型,很有可能解决遇到的问题
####################

关于字符格式可以参考:
hi.baidu.com/1459/blog/item/ea830bf3314abdc20b46e07c.html
hi.baidu.com/%D6%F0%C4%BE/blog/item/772c5944d5e77e8bb3b7dcab.html

http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html

MySQL Character Set Name Java-Style Character Encoding Name
ascii US-ASCII
big5 Big5
gbk GBK
sjis SJIS (or Cp932 or MS932 for MySQL Server < 4.1.11)
cp932 Cp932 or MS932 (MySQL Server > 4.1.11)
gb2312 EUC_CN
ujis EUC_JP
euckr EUC_KR
latin1 ISO8859_1
latin2 ISO8859_2
greek ISO8859_7
hebrew ISO8859_8
cp866 Cp866
tis620 TIS620
cp1250 Cp1250
cp1251 Cp1251
cp1257 Cp1257
macroman MacRoman
macce MacCentralEurope
utf8 UTF-8
ucs2 UnicodeBig
分享到:
评论
1 楼 siqiniao 2014-11-22  
[color                     =yellow][color=olive][/color][/color]

相关推荐

    深入理解mysql SET NAMES和mysql(i)_set_charset的区别

    `mysql_set_character_set` 的关键在于,它不仅执行了`SET NAMES` SQL命令(对于MySQL 4.1及以上版本),还处理了字符集目录(`charset_dir`),以确保能找到相应的字符集定义。对于旧版本的MySQL服务器,如果版本低于...

    LNH_MySQL 10-MySQL上执行set names到底做了什么?.mp4

    LNH_MySQL 10-MySQL上执行set names到底做了什么?.mp4

    mysqli_set_charset和SET NAMES使用抉择及优劣分析

    最近公司组织了个PHP安全编程的培训, 其中涉及到一部分关于Mysql的”SET NAMES”和mysql_set_charset (mysqli_set_charset)的内容: 说到, 尽量使用mysqli_set_charset(mysqli:set_charset)而不是”SET NAMES”, 当然...

    如何更改MySQL数据库的编码为utf8mb4

    init_connect='SET NAMES utf8mb4' ``` 配置完成后,重启MySQL服务,以使更改生效。然后通过执行SQL命令`SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'`来检查...

    set names utf8.doc

    - **标题**: “set names utf8.doc” 显示这是一份关于设置 MySQL 数据库字符集为 UTF-8 的文档。 - **描述**: 同样用 “set names utf8.doc” 描述,表明该文档的主要内容涉及 MySQL 中如何设置字符集为 UTF-8。 #...

    PHP MYSQL乱码问题,使用SET NAMES utf8校正

    SET NAMES命令告诉MySQL客户端程序将会用什么字符集来发送和接收数据。该命令实际上是向MySQL发送了三个命令:SET character_set_client, SET character_set_results, 以及 SET character_set_connection。当SET ...

    php读取mysql乱码,用set names XXX解决的原理分享

    要解决这种问题,常用的一个方法是使用MySQL的“SET NAMES”命令来声明字符集编码。 在深入讨论“set names utf8”之前,我们需要了解MySQL数据库中字符集的配置及其对数据传输的影响。MySQL的字符集设置主要涉及到...

    MySQL Update Set 更新数据.docx

    mysql_query('set names gbk'); $sql = 'UPDATE user SET email = "xiaoming@sina.com" WHERE username = "小明"'; if (mysql_query($sql, $conn)) { echo '更新数据成功!'; } else { echo '更新数据失败:' . ...

    MySQL编码与中文显示

    要修改数据库的编码方式,我们可以使用 `SET NAMES` 命令,例如 `SET NAMES 'gbk'` 或 `SET NAMES 'utf8'`。这将修改客户端编码方式、连接编码方式、数据库编码方式和结果集编码方式为 gbk 或 utf8。 显示数据表中...

    设置mysql字符集

    mysql&gt; SET NAMES 'utf8mb4'; ``` 或者更详细的设置: ```sql mysql&gt; SET character_set_client = utf8mb4; mysql&gt; SET character_set_connection = utf8mb4; mysql&gt; SET character_set_database = utf8mb4; mysql...

    解决 docker mysql 中文乱码问题

    docker mysql 字符集设置 使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 docker版本:18.06 mysql 版本:5.7 ...init-connect='SET NAMES utf8' 2. 编写 Dock

    Mysql中文乱码问题完美解决方案.pdf

    例如,如果数据库为utf-8编码,可以使用`mysql_query("SET NAMES 'UTF8'")`。对于GBK编码,使用`mysql_query("SET NAMES 'GBK'")`。 3. **修改配置文件** - **客户端配置**:在`my.ini`的[client]部分设置`default...

    Mysql中文乱码问题完美解决方案

    在MySQL中,字符集(Character Set)是指一个字符集合以及如何将这些字符编码为数字值,而排序规则(Collation)则是一组用于比较字符的规则。解决MySQL中文乱码问题的关键在于正确设置和使用字符集与排序规则。 - ...

    mysql乱码的解决方法

    - 在`[mysql]`部分将`default-character-set=XXX`改为`default-character-set=utf8`。 - 在`[mysqld]`部分将`character_set_server=XXX`改为`character_set_server=utf8`。 3. **修改db.opt文件**: - 找到MySQL...

    MySQL写入中文乱码character

    ### MySQL写入中文乱码之处理character_set_server编码 #### 一、问题概述 在使用MySQL数据库时,经常遇到的一个问题是写入或读取中文字符时出现乱码的情况。这通常是因为不同组件间的字符集设置不一致导致的。本文...

    pb导入mysql5.0中中文乱码

    在使用 Pb 将数据导入到 MySQL 5.0 时,可以在 ODBC 连接选项中添加 set names 语句,以解决中文乱码问题。具体来说,可以在 connector options 中的 initial statement 中添加以下语句: set names gbk 这样,在...

Global site tag (gtag.js) - Google Analytics