PHP+MySQL中对UTF-8,UTF8(utf8),set names gbk 的理解

问题一:在我们进行数据库操作时会发现,数据库中表的编码用的是utf-8,但是在进行dos命令是要使用set names gbk

(一)Mysql中默认字符集设置有四级:服务器级,数据库级,表级,和字段级   前三种都是默认设置,并不代表你的字段最终会使用这个字符集设置

(二)set names 这个mysql命令设置是客户端发出的命令编码,连接层编码,和服务器端返回结果的编码,相当于客户端和服务器交互用的编码,而不是数据保存的编码

问题二:在我们使用的时候;当我们set names utf 的时候,用select命令来显示表格内容时,里面的中文还是会变成乱码,而gbk则正常

(一):set  names是用来设置php与mysql通信的字符编码,即 :php文件编码格式为gbk或者gb2312的话,在进行数据查询的时候,要设置mysql通信的编码格式为gbk

(二):UTF8不要导入gbk   ,   gbk不要导入UTF8

(三):DOS下不支持UTF8显示

UTF-8和utf8的区别:

(一)首先PHP在windows下边英文是不区分大小写,UTF-8它是标准写法,所以可以写成utf-8

(二)UTF-8也可以把中间的”-“省略,写成UTF8,一般程序都能识别,但也有例外,所以为了严格一些,做最好的自己用标准大写UTF-8

(三)在数据库中只能使用“utf8”(MySQL) ,在MySQL的命令模式中只能使用“utf8”,不能使用“utf-8”,也就是说在PHP程序中只能使用“set names utf8(不加小横杠)”,如果 你加了“-”此行命令将不会生效,但是在PHP中header时却要加上“-”,因为IE不认识没杠的“utf8”,原因见下文。

PHP中的header:  <?php header(‘Content-Type: text/html; charset=UTF-8‘); ?>

//奇怪了:Content-Tyep用冒号,Chatset却是等号。

静态文件使用:   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

总结:【只有在MySQL中可以使用“utf-8”的别名“utf8”,但是在其他地方一律使用大写“UTF-8”。】 具体为:   在命令“mysql_query(set names utf8)”外一律用大写“UTF-8”。

时间: 2024-11-07 04:29:19

PHP+MySQL中对UTF-8,UTF8(utf8),set names gbk 的理解的相关文章

mysql中latin1编码中文转utf8

在mysql中,对应的表字段编码通常默认为lartin1编码,在本地客户端显示的时候看着是乱码,但是通过mysql -u -p -h命令登录后,select查询到数据是正常的,通过jdbc或者php等去取回来的中文是乱码: 也就是中文在mysql中是lartin1,到我们自己本地或者用navicat等select却是乱码,使用mysql内置函数来转换一下 SELECT convert(unhex(hex(convert(name using latin1))) using utf8) as na

mysql中索引,触发器,事务,存储引擎的理解

1.索引:作用于表中的某列,并将其进行排序,有助于快速地进行查询. 索引是对数据库表中一个或多个列的值进行排序的数据结构,是用于提高在数据库表中访问数据的速度的数据库对象.其实索引相当于一本书的目录,如果没有索引,要想在数据库中查找某一特定的值就需要遍历整个数据库表,但是有了索引之后就可以在索引当中查找,有助于更快地获取信息: 索引可分为聚集索引和非聚集索引: 聚集索引:是按照数据存放的物理位置为顺序的: 非聚集索引中,表数据存储顺序与索引顺序无关:一张表上只能创建一个聚集索引,因为真实数据的物

Mysql中添加汉字乱码无法识别问题

Mysql中默认的字符集为UTF-8,在命令行模式下添加汉字时可能会报错或警告,显示的结果也会不正确. 翻php笔记似乎大部分情况下都是找解决的命令···干脆写上博客 命令行模式下,输入:show avariables like '%char%'; 模糊查询结果可以看到Mysql的字符集.默认为UTF-8, 输入: set names gbk; set character_set_client=gbk; 这样输入的中文就OK了~

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据库字符集.character-set-table:数据库表字符集.优先级依次增加.所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集.character-set-client:客户端的字符

PHP与MYSQL中UTF8 中文排序例子

1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行.用gbk和gb2312可以.这跟几种格式的编码有关系.gbk和gb2312本身的编码就是用拼音排序的. 代码如下 复制代码 function utf8_array_asort(&$array){if(!isset($array) || !is_array($array)){return false;}foreach($array as $k=>$v){$array[$k] = iconv('UTF-

MySql中SET NAMES utf8详解(乱码原理)

 不多说,先上图 分析: set names utf8之前, character_set_client    | gbk character_set_connection| gbk character_set_results   | gbk set names utf8之后, character_set_client    | utf8 character_set_connection| utf8 character_set_results   | utf8 关于字符集可参照mysql中文手

MySQL 5.5版本解决中文乱码问题时my.ini内[mysqld]项中不能再写default-character-set=utf8

来看看如何解决乱码问题: 在mysql中默认字符集是latin1, 想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置: [client] default-character-set=utf8 [mysqld] default-character-set=utf8 skip-character-set-client-handshake #此处是忽略客户端的字符集,使用服务器的设置 (skip语句和client中的default选一个) 当然你可以在建立数据库是规定字符集: 1

mysql中utf8和utf8mb4区别

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换.当然,为了节省空间,一般情况下使用utf8也就够了. 二.内容描述 那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了.三个字节的 UTF-8 最

记住,永远不要在MySQL中使用“utf8”-转

http://www.infoq.com/cn/articles/in-mysql-never-use-utf8-use-utf8 最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误: Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1 我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保