当前位置:首页 » 数据仓库 » 数据库导入sql乱码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库导入sql乱码

发布时间: 2023-07-09 06:37:38

数据库导入sql后中文乱码怎么解决

方法一:
通过增加参数
–default-character-set
=
utf8
解决乱码问题
mysql
-u
root
-p
password
<
path_to_import_file
–default-character-set
=
utf8
方法二:
在命令行导入乱码解决
1.
use
database_name;
2.
set
names
utf8;
(或其他需要的编码)
3.
source
example.sql
(sql文件存放路径)
方法三:
直接粘贴sql文件里的代码
1.
打开sqlyog客户端软件;
2.
定位到sql编辑器,然后用记事本打开刚刚导出的sql文件;
3.
复制文件中所有sql语句到sql编辑器当中,执行这些sql代码;
方法四:
用记事本或其他文本工具改变sql文件的编码格式(若方法三不行,那就尝试方法四)
1.
用记事本(或ue)打开刚才的导出的sql文件;
2.
另存此文件——打开另存为对话框,选择对话框中的编码格式为unicode编码;
3.
保存文件,然后ctrl+a,全选;
4.
复制里面的sql语句到sqlyog中的“sql编码器”当中,再执行一次sql语句;
5.
执行完成后切记刷新一次,查看中文的数据表,乱码消除,大功告成;

② SQL插入数据中文为乱码

请直接在sql 查询器中执行以上语句,如果仍有乱码,很可能是数据库的字符集没有设置好。
如果你用的是sql server 2000,

最好检查该数据库的字符集 (Collation) 是不是 gb2312类, 例如
Chinese_PRC_CI_AS

③ sql文件导入后,中文变乱码,怎样解决

解决的方法和详细的操作步骤如下:

1、首先,单击“Objects”按钮以查看有关此表的详细信息,如下图所示,然后进入下一步。

④ 在导入sql server数据库时,怎么老是出现乱码呀

客户端和服务端的字符集不一致造成态毁的,调整成一致就行了。
查询字符集的方法为:
use master
go
select * from syscharsets
go
如果记录中chinses_prc开头的都是支持简体中文的字符集
1. 字符集是支持双字节的字符集如中文字符集(Collation name为Chinese_PRC_CI_AS)

<1>. 定义varchar(2)

(1) 正式表
总结:在中文字符集下,定义varchar(x), 不论使用不使用N'',英文字符都占1个字节,即可以存x个英文字符; 不论使用不使用N'',中文字符都占2个字节,即可以存(x / 2)个中文,select结果为汉字本身,不是乱码。

(2) 临时表
总结:在中文字符集下,定义varchar(x), 和正式表表帆纳备现一样;

<2>. 定义nvarchar(2)

(1) 正式表
总结:在中文字符集下,定义nvarchar(x), 不论使用不使用N'',英文字符都占2个字节,即可以存x个英文字符; 不论使用不使用N'',中文字符都占2个字节,即可以存x个中文,select结果为汉字本身,不是乱码。

(2) 临时表
总结:在中文字符集下,定义nvarchar(x), 和正式表表现一样。
<3>. 类型为varchar时,长度 x 和 datalength()对应,都指字节大小; 英文len() = datalength();中文len() = datalength() / 2;类型为nvarchar时,长度 x 和 len()对应,都指字符长度。

2. 字符集是支持单字节的字符集如拉丁字符集(Collation name为Latin1_General_CI_AS)

<1>. 定义varchar(2)

(1) 正式表
总结:在英文字符集下,定义varchar(x),不论使用不使用N'',英文字符都占1个字节,即可以存x个英文字符;不论使用不使用N'',中文字符都占1个字节,即可以存x个中文,但茄衡只保存前半截中文编码,所以select结果为乱码;(特殊:如果使用N'',此时插入的字符数最大为4000)
英文和中文 len() = datalength();

(2) 临时表
总结:在英文字符集下,定义varchar(x), 不论使用不使用N'',英文字符都占1个字节,即可以存x个英文字符;不使用N''时,中文占1个字节,可以存x个汉字,但都只存入汉字前半截字符编码,显示为乱码;使用N''时,中文占2个字节,只可以存 x/2 个汉字,没有乱码,取出仍为汉字,说明在英文字符集下通过使用N''是可以保存汉字的;除用N''保存的中文外,其余英文和中文 len() = datalength();用N''保存的中文字符len() = datalength() / 2;

<2>. 定义nvarchar(2)

(1) 正式表
总结:在英文字符集下,定义nvarchar(x),不论使用不使用N'',英文字符都占2个字节,即可以存x个英文字符;(注意每个字符比varchar用的空间大)不论使用不使用N'',中文字符都占2个字节,即可以存x个中文字符,但不使用N''只保存前半截中文编码,所以select结果为乱码;使用N''则保存和取出都为汉字本身;

(2) 临时表
总结:在英文字符集下,定义nvarchar(x), 和正式表表现相同;

<3>. 类型为varchar时,长度 x 和 datalength()对应,都指字节大小;(临时表中N''中文字符长度比较特殊;) 类型为nvarchar时,长度 x 和 len()对应,都指字符长度。

二、 使用归类
抛开不常用的临时表不谈,只看正式表,再加上varchar和nvarchar类型的最大长度,得到以下经验:
<1> 最大长度问题
1. 在中文字符集下使用varchar,最大长度可定义8000,这个8000是指字节数(datalength()),即最大可以保存8000个英文字符,4000个中文字符。
特殊:若存入字符N'a',则最大能保存4000个字符,但其所占空间为4000字节。
2. 在中文字符集下使用nvarchar,最大长度可定义4000,这个4000是指字符个数(len()),即最大可以保存4000个英文字符,4000个中文字符。

3. 在英文字符集下使用varchar,最大长度可定义8000,这个8000是指字节数(datalength()),由于中文英文都保存为1字节,故最大可以保存8000个英文、中文字符。
4. 在英文字符集下使用nvarchar,最大长度可定义4000,这个4000是指字符个数(len()),即最大可以保存4000个英文字符,4000个中文字符。
<2> 文字显示问题
1. N''要和数据类型nvarchar, nchar一起使用,如果对varchar, char字段类型强制使用N'',则会产生一些特殊现象,甚至无法控制。
2. 在英文字符集下,想要保存特殊符号字符、中文等双字节字符,在定义表结构时要使用nvarchar或者nchar,在保存时要用N''。
3. 在中文字符集下,数据库系统缺省已经可以保存特殊符号字符、中文等双字节字符。即使用不使用N'',都按双字节处理。但为了统一期间建议,在定义表结构时如果使用nvarchar或者nchar,在保存时要用N'',在定义表结构时如果使用varchar和char,此时不要使用N''操作。
4. SUBSTRING ( expression , start , length ) 。length:是一个整数,指定子串的长度(要返回的字符数或字节数)。 中文字符集中按字符数取;英文字符集中,char, varchar按字节数取,nchar, nvarchar按字符数取;
三、 其他参考
使用 Unicode 数据
unicode代码页、排序规则、SQL Server 排序规则基础知识、Windows 排序规则排序样式、选择 SQL 排序规则、 DBCS 字符