如何修改MySQL数据库中表和表中字段的编码方式

如何修改MySQL数据库中表和表中字段的编码方式,第1张

利用sql语句进行修改,举例说明:

1、ALTER

TABLE

`test`

DEFAULT

CHARACTER

SET

utf8;该命令用于将表test的编码方式改为utf8;

2、ALTER

TABLE

`test`

CHANGE

`name`

`name`

VARCHAR(36)

CHARACTER

SET

utf8

NOT

NULL;

该命令用于将表test中name字段的编码方式改为utf8

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)

整个系统编码一至,整个系统中不会再出现任何乱码

你要是用一个可视化 *** 作的界面就简单了,就比如navicat

for

mysql右键数据库-->数据库属性--->字符集--->utf-8

unicode

/排序规则--->utf8-gernal-ci就行了

1直接打开SQLSERVER2008的相关窗口,会看到字符集为ISO-8859-5,如下图。

2如果下一步是好的,继续并点击首选项跳转到窗口。

3这时,一个新的对话框d出。您需要选择编码为utf-8并确认更改。

4通过这种方式,当找到图的结果时,就可以达到目的。

在Unix下,可以编辑mycnf文件进行编码修改,Windows下可以直接用Mysql Server Instance Config Wizard 进行设置。

在linux下修改3个 mycnf 中 /etc/mysql/mycnf 文件

找到[client] 在下面添加

default-character-set=utf8 默认字符集为utf8

再找到[mysqld] 添加

default-character-set=utf8 默认字符集为utf8

init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

修改好后,重新启动mysql 即可,查询一下show variables like 'character%';

此方法用于标准mysql版本同样有效,对于/etc/mycnf文件,需要从mysql/support-files的文件夹复制 my-largecnf 到 /etc/mycnf 。

(1)关闭mysql服务

[plain] view plaincopy

service mysql stop

(2)修改 /etc/mysql/mycnf  (默认的安装路径)

[plain] view plaincopy

vim /etc/mysql/mycnf

打开mycnf后,在文件内的[mysqld]下增加如下两行设置:

[plain] view plaincopy

character_set_server=utf8

init_connect='SET NAMES utf8'

(具体如截图所示):

保存退出。

(3) 重新启动mysql服务

[plain] view plaincopy

service mysql start

至此,完成修改默认编码,登陆mysql后重新使用show variable like '%character%'获得的输出效果如下:

新建一个模板,比如

template_utf8

,设置好utf-8以及plpgsql之类的lang还有插件,从这个数据库新建就全是uft-8了。

如果是更改的话,需要先把数据库导出为sql,

再新建,而后导入。导入前,修改sql里的create

语句,指定字符集。有汉字的话,另存为utf-8的编码,再导入。

1sp_helpsort

SELECT SERVERPROPERTY ('Collation')

查看排序规则

应该字符集关

2更改服务器排序规则

更改 SQL Server 2005 实例默认排序规则 *** 作能比较复杂包括步骤:

确保具重新创建用户数据库及些数据库所象所需全部信息或脚本

使用工具(例容量复制)导所数据

删除所用户数据库

重新 setup 命令 SQLCOLLATION 属性指定新排序规则 master 数据库例:

复制代码

start /wait setupexe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI

关重新 master 数据库详细信息请参阅何重新 SQL Server 2005 Master 数据库

以上就是关于如何修改MySQL数据库中表和表中字段的编码方式全部的内容,包括:如何修改MySQL数据库中表和表中字段的编码方式、怎么修改sql server 2000的编码方式、怎么修改mysql数据库字符集编码为utf-8等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9287493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存