符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容
成都创新互联公司是一家专注于成都网站建设、网站设计与策划设计,札达网站建设哪家好?成都创新互联公司做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:札达等地区。札达做网站价格咨询:028-86922220
及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例、单个数据库、表、列等四个级
别指定。
对于使用者来说,一般推荐使用utf8编码来存储数据。而要解决乱码问题,不单单是MySQL数据的存储问题,还
和用户的程序文件的编码方式、用户程序和MySQL数据库的连接方式都有关系。
首先,MySQL有默认的字符集,这个是安装的时候确定的,在编译MySQL的时候可以通过DEFAULT_CHARSET=
utf8和DEFAULT_COLLATION=utf8_general_ci这两个参数(MySQL5.5版本,5.1版本用--with-charset=
utf8 --with-collation=utf8_general_ci)来指定默认的字符集为utf8,这也是最一劳永逸的办法,这样指定后,
客户端连接到数据库的编码方式也默认是utf8了,应用程序不需要任何处理。
但是遗憾的是,很多人编译安装MySQL的时候没有指定这两个参数,大多数人更是通过二进制程序的方式安装,那
么这时候MySQL的默认字符集是latin1。而这时候我们仍然可以指定MySQL的默认字符集,通过my.cnf文件增加
两个参数:
1.在[mysqld]下添加
default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)
2.在[client]下添加
default-character-set=utf8
这样我们建数据库建表的时候就不用特别指定utf8的字符集了。配置文件里的这种写法解决了数据存储和比较的问题
,但是对客户端的连接是没有作用的,客户端这时候一般需要指定utf8方式连接才能避免乱码。也就是传说总的set
names命令。事实上,set names utf8命令对应的是服务器端以下几个命令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = xutf8;
但这三个参数是不能写在配置文件my.cnf里的。只能通过set命令来动态修改。我们需要的是在配置文件里写好一劳
永逸的办法。那么这时候,是否有在服务端解决问题的办法呢,可行的思路是在init_connect里设置。这个命令在每
个普通用户连接上来的时候都会触发执行,可以在[mysqld]部分增加以下一行设置连接字符集:
在[mysqld]下添加:
init_connect = 'SET NAMES utf8'
总结:
1、首选在编译安装MySQL的时候指定两个参数使用utf8编码。
2、次选在配置文件my.cnf或my.ini设定两个参数,同时设置init_connect参数。
3、第三在配置文件my.cnf或my.ini设定两个参数,同时客户端的连接指定set names命令。
4、在配置文件my.cnf里的client和server处加入default-character-set参数方便管理。
如果用户想改变表的默认字符集和所有的字符列的字符集到一个新的字符集,使用下面的语句:
ALTER
TABLE
tbl_name
CONVERT
TO
CHARACTER
SET
charset_name;警告:上述操作是在字符集中转换列值。如果用户在字符集(如
gb2312)中有一个列,但存储的值使用的是其它的一些不兼容的字符集(如
utf8),那么该操作将不会得到用户期望的结果。在这种情况下,用户必须对每一列做如下操作:
ALTER
TABLE
t1
CHANGE
c1
c1
BLOB;
ALTER
TABLE
t1
CHANGE
c1
c1
TEXT
CHARACTER
SET
utf8;
这样做的原因是:从
BLOB
列转换或转换到
BLOB
列没有转换发生。
如果用户指定以二进制进行
CONVERT
TO
CHARACTER
SET,则
CHAR、VARCHAR
和
TEXT
列将转换为它们对应的二进制字符串类型(BINARY,VARBINARY,BLOB)。这意味着这些列将不再有字符集,随后的
CONVERT
TO
操作也将不会作用到它们上。
如果仅仅改变一个表的缺省字符集,可使用下面的语句:
ALTER
TABLE
tbl_name
DEFAULT
CHARACTER
SET
charset_name;
DEFAULT是可选的。当向一个表里添加一个新的列时,如果没有指定字符集,则就采用缺省的字符集(例如当ALTER
TABLE
...
ADD
column)。
ALTER
TABLE
...
DEFAULT
CHARACTER
SET
和
ALTER
TABLE
...
CHARACTER
SET
是等价的,修改的仅仅是缺省的表字符集。
update 表名称 set 属性1=?,属性2=? where id=?,这里的id值得是你表的主键,他的值是想要修改的那条记录的主键值。
具体修改方法:
0:表示数字占位符。如果值在格式字符串被设置为在"0" 出现的位置上有数字的格式,则该数字会被复制到输出字符串。否则"0" 会被保存在输出字符串的位置。例如:在整数栏位放置 0000,从表输出的整数将会有 0012 的格式。
#:表示数字占位符。如果值在格式字符串被设置为在"#"出现的位置上有数字的格式,则该数字会被复制到输出字符串。否则没有任何东西保存在输出字符串的位置。例如在整数栏位放置 ####,从表输出的整数将会有 12 34 的格式。 . :表示小数点。格式字符串的第一个"." 字符决定小数点分隔符的位置,任何额外的"." 字符会被忽略,在输出中实际作为一个小数点分隔符的字符是由 DecimalSeparator 全局变量决定。 DecimalSeparator 的默认值指定在 Windows 控制面板中地区及语言选项部分的数字格式。
, :表示千位数分隔符。如果格式字符串包含一个或多个"," 字符,输出的数中小数点左边将会插入千位数分隔符,每 3 个数字为一组。在输出中带有千位数分隔符的字符是由ThousandSeparator 全局变量决定。ThousandSeparator 的默认值指定 Windows 控制面板地区及语言选项部分的数字格式。
E+:科学记数法。如果任何一个"E+"、"E-" 、"e+"或"e-" 字符串包含在格式字符串中,数字设置为使用科学记数法格式。一组最多四个"0" 字符立即跟随"E+"、"E-" 、"e+"或"e-" ,决定在指数中数字的最少数。"E+"及"e+"格式输出加号到正的指数及输出减号到负的指数。"E-" 及"e-" 格式只会输出记号字符到负的指数。 'xx'/"xx":字符以单引号或双引号括住的会照原样显示,并不会影响格式。 ; :在格式字符串分隔正数、负数及零数部分。
二、Navicat for MySQL 如何设置日期时间格式
在小数点之前最左边 "0" 的位置,及在小数点之后最右边 "0" 的位置,格式字符串决定数字必须出示在输出字符串的范围。
数被设置为四舍五入至小数点右边最多数字占位符("0" 或 "#")小数位的格式。如果格式没有包含小数点,值会被设置为四舍五入至最接近整数的格式。 如果数字在格式字符串被设置为小数位分隔符左边的数字,比 "." 字符左边数字占位符多的格式,额外数字会输出在第一个数字占位符之前。
(1)最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值, 如 default-character-set = utf8 character_set_server = utf8 修改完后,重启mysql的服务,service mysql restart 使用 mysql SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8 +--------------------------+---------------------------------+ | 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 | utf8 | | character_set_system | utf8 | | character_sets_dir | D:"mysql-5.0.37"share"charsets" | +--------------------------+---------------------------------+ (2) 还有一种修改mysql默认字符集的方法,就是使用mysql的命令 mysql SET character_set_client = utf8 ; mysql SET character_set_connection = utf8 ; mysql SET character_set_database = utf8 ; mysql SET character_set_results = utf8 ; mysql SET character_set_server = utf8 ; mysql SET collation_connection = utf8 ; mysql SET collation_database = utf8 ; mysql SET collation_server = utf8 ; 一般就算设置了表的mysql默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句: SET NAMES 'utf8'; 它相当于下面的三句指令: SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8;
1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如 default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务,service mysql restart
(2) 还有一种修改mysql默认字符集的方法,就是使用mysql的命令
SET NAMES 'utf8';