
-- 创建数据库时,设置数据库的编码方式
-- CHARACTER SET:指定数据库采用的字符集,utf8不能写成utf-8
-- COLLATE:指定数据库字符集的排序规则,utf8的默认排序规则为utf8_general_ci(通过show character set查看)
drop database if EXISTS dbtest;
create database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci;-- 修改数据库编码
alter database dbtest CHARACTER SET GBK COLLATE gbk_chinese_ci;
alter database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci;-- 创建表时,设置表、字段编码
use dbtest;
drop table if exists tbtest;
create table tbtest(
id int(10) auto_increment,
user_name varchar(60) CHARACTER SET GBK COLLATE gbk_chinese_ci,
email varchar(60),
PRIMARY key(id)
)CHARACTER SET utf8 COLLATE utf8_general_ci;-- 修改表编码
alter table tbtest character set utf8 COLLATE utf8_general_ci;
-- 修改字段编码
ALTER TABLE tbtest MODIFY email VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci;-- 查看所有的字符编码
SHOW CHARACTER SET;
-- 查看创建数据库的指令并查看数据库使用的编码
show create database dbtest;-- 查看数据库编码:
show variables like '%char%';-- 设置character_set_server、set character_set_client和set character_set_resultsset character_set_server = utf8; -- 服务器的默认字符集。使用这个语句可以修改成功,但重启服务后会失效。根本的办法是修改配置MYSQL文件MYINI,
你要是用一个可视化 *** 作的界面就简单了,就比如navicat
for
mysql右键数据库-->数据库属性--->字符集--->utf-8
unicode
/排序规则--->utf8-gernal-ci就行了
解决方式
在导出mysql sql执行文件的时候,指定一下编码格式:
复制代码代码如下:
mysqldump -uroot -p --default-character-set=utf8 mo(dbname) > E://xxxxsql
导入的时候OK了
执行如下
复制代码代码如下:
mysql -u root -p --default-character-set=utf8
use dbname
source /root/newsdatasql
sql server 2000的unicode编码有特殊性,仅仅在rails中使用utf8编码,和把全部rails项目文件格式改成utf8之外,还是不够的。仅仅这样做,只是部分中文字符能够正确处理,而且存入sql server2000中的中文数据,也完全是乱码。正确的配置方法应该如下。
1 ms sql server2000中数据字段全部要选择成n打头的类型,比如ntext,nvarchar等。
2安装ADO Driver
安装one -click installer 来安装ruby 的话就已经安装了所有连接SQL Server使用的需求包但是,并没有安装ADO Driver
这样来安装它:
在Ruby目录下找到这个目录: \ruby\lib\ruby\site_ruby\18\DBD 例如:我的Ruby安装在D:\ruby中,所以是这个目录D:\ruby\lib\ruby\site_ruby\18\DBD 在该目录中创建一个ADO文件夹 下载Ruby-DBI,将lib/dbd_ado/ADOrb文件拷贝到X:/ruby/lib/ruby/site_ruby/18/DBD/ADO/ADOrb
3 配置databaseyml:Java代码
development:
adapter: sqlserver
database: database_name
host: server_name
username: user_name
password: your_pw_here
development:
adapter: sqlserver
database: database_name
host: server_name
username: user_name
password: your_pw_here
4在environmentrb添加下面代码
require 'win32ole'
WIN32OLEcodepage = WIN32OLE::CP_UTF8
在这里稍微解释下第四部分的设置。sql server 2000中使用的unicode 并非是utf8,ado的默认链接编码都是当前系统设置的code pages相关的。
一般的windows设置都是非unicode的,比如简体中文windows系统下一般都是gb2312, 在rails中databaseyml设置encoding: utf8,对于sql server没有任何用处。
为了迫使sql server接受utf8数据,必须修改ado链接的code pages值为utf8,才能让ado部分代码在接受rails传入的utf8数据之后,不做任何额外的处理 否则的话,ado部分代码会根据当前系统的默认code pages值来处理这里字符数据。
于是在中文windows系统上,从utf8的rails项目中传入的数据,会被当作gb2312编码的数据来传递到sql server2000中,于是sql server2000中存入的数据会成为乱码,也有部分数据在处理过程中出错,导致sql 语句执行出错。比如常见的中文字符右边的单引号会不见的情况。
不设置 WIN32OLEcodepage = WIN32OLE::CP_UTF8,你的整个系统编码配置是这样的
rails(utf8)<-->ado(根据当前系统cp来取得编码,或是gb2312或是其他)<-->sql server 2000 (unicode)
整个系统编码不一至 。
WIN32OLEcodepage = WIN32OLE::CP_UTF8 这句代码就是为了更改cp值整个系统编码配置是这样的
rails(utf8)<-->ado(utf8)<-->sql server 2000 (unicode)
整个系统编码一至,整个系统中不会再出现任何乱码。
1去mysql下找到文件myini配置文件用记事本打开,找到 default-character-set=latin1,character-set-server=latin1;将latin1改为utf-8或者gbk,修改完之后保存。
2我的电脑右击 “管理”进入之后选择“服务和应用程序”下的“服务”,找到“mysql”之后右击选择“重新启动”。
您好,很高兴为您解答。
utf8编码可以支持一到4字节的字符编码,在mysql用我们一般使用utf8编码来处理字符类型,通常情况下都没有问题,但遇到4字节编码的字符,在数据存取的时候就会有问题了。
通常我们可能会得到一个错误或者警告:Incorrect
string
value:
'/xF0/x9D/x8C/x86'
for
column
Mysql
从553版本开始支持4字节的utf8编码,如果你的Mysql数据库是553+,按照以下步骤就能解决这个问题,如果版本低于553,是不是可以考虑升级数据库版本呢?
1、在修改数据库编码前先对数据库备份(虽然utf8mb4兼容utf8,但有备无患)
2、修改数据库的编码、表的编码、列的编码为utf8mb4
3、在Mysql数据库配置文件(myini)中加入如下设置
[client]default-character-set
=
utf8mb4[mysql]default-character-set
=
utf8mb4[mysqld]character-set-client-handshake
=
FALSEcharacter-set-server
=
utf8mb4collation-server
=
utf8mb4_unicode_ci
重新启动Mysql数据库,确认设置生效
mysql>
show
VARIABLES
like
'%char%';+--------------------------+----------------------------------------+|
Variable_name
|
Value
|+--------------------------+----------------------------------------+|
character_set_client
|
utf8
||
character_set_connection
|
utf8
||
character_set_database
|
utf8mb4
||
character_set_filesystem
|
binary
||
character_set_results
|
utf8
||
character_set_server
|
utf8mb4
||
character_set_system
|
utf8
||
character_sets_dir
|
/home/app/mysql-5533/share/charsets/
|+--------------------------+----------------------------------------+8
rows
in
set
4、在获取数据库连接的时候执行sql:set
names
utf8mb4;我使用的是alibaba的开源数据库连接池程序,在配置文件中增加一行如下配置
<property
name="connectionInitSqls"
value="set
names
utf8mb4;"
/>
重新启动应用程序,问题解决
如若满意,请点击右侧采纳答案,如若还有问题,请点击追问
希望我的回答对您有所帮助,望采纳!
~
O(∩_∩)O~
以上就是关于mysql用sql语句创建表和数据库怎么设置字符编码'全部的内容,包括:mysql用sql语句创建表和数据库怎么设置字符编码'、如何设置mysql数据库为utf-8编码、mysql数据库怎样设置中文编码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)