MsSQL中汉字默认编码是UTF8还是GBK?应该怎样调整?

时间:2021-11-17 14:07:32
MsSQL中汉字默认编码是UTF8还是GBK?应该怎样调整?
比如说将编码从GBK改为UTF8或者将编码从UTF8改为GBK。

29 个解决方案

#1


排序规则  默认的是什么?

用unicode 可以用类型 nvarchar  nchar等

#2


服务器级别,确定方法很简单。
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为 校对规则添加--default-collation。
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个 校对规则,那就与--default-charset=latin1 --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。
因此,以下三个命令有相同的效果:

shell> mysqld

shell> mysqld --default-character-set=latin1

shell> mysqld --default-character-set=latin1 \

           --default-collation=latin1_swedish_ci

更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如:

shell> ./configure --with-charset=latin1
或者:

shell> ./configure --with-charset=latin1 \

           --with-collation=latin1_german1_ci

mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。

当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。

#3


MsSQL中汉字默认编码是UTF8还是GBK?应该怎样调整? 
看错了。。。看成MYSQL~

#4


排序规则默认Chinese_PRC_CI_AS
通过这里可以看出其中的汉字是UTF编码还是GBK编码吗?

#5


MsSQL中汉字默认编码是UTF8还是GBK?应该怎样调整?
引用 2 楼 feixianxxx 的回复:
服务器级别,确定方法很简单。
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和   校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为   校对规则添加--default-collation。
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin……

#6


要用汉字的话  就用unicode存储 nvarchar
引用 4 楼 daddi 的回复:
排序规则默认Chinese_PRC_CI_AS
通过这里可以看出其中的汉字是UTF编码还是GBK编码吗?

#7


引用 4 楼 daddi 的回复:
排序规则默认Chinese_PRC_CI_AS
通过这里可以看出其中的汉字是UTF编码还是GBK编码吗?

排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:
  Chinese_PRC_CS_AI_WS 
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则,按拼音排序。
Chinese_PRC_Stroke 表示按汉字笔画排序;

排序规则的后半部份即后缀 含义: 
  _BIN 二进制排序 
  _CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)
  _AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)
  _KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive)
  _WI(WS) 是否区分宽度 WI不区分,WS区分(width-insensitive/width-sensitive) 
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。

#8


你好,谢谢,但是我输入的东西中大约一半是汉字,一半是英文。
而且现在的问题是一行数据总大小,
若为GBK编码,汉字每编码为2字节,我的数据中mssql中一行的总大小如何都会在6800字节以内。
但是对UTF-8格式的汉字而言,很多汉字的编码是3个字节,这样下来一行的总大小就可能超过8K,而mssql中一行的大小是不能够超过8K的,这样就会产生一个错误。

若想避免这个错误,最佳的方法就是在mssql中使用GBK编码,但是我不知道怎么控制。

#9


引用 8 楼 daddi 的回复:
你好,谢谢,但是我输入的东西中大约一半是汉字,一半是英文。
而且现在的问题是一行数据总大小,
若为GBK编码,汉字每编码为2字节,我的数据中mssql中一行的总大小如何都会在6800字节以内。
但是对UTF-8格式的汉字而言,很多汉字的编码是3个字节,这样下来一行的总大小就可能超过8K,而mssql中一行的大小是不能够超过8K的,这样就会产生一个错误。

若想避免这个错误,最佳的方法就……

如果是nvarchar字段类型 使用的是Unicode编码类型 一个字符占2个字节 
所以最多使用 nvarchar(4000)

当然 如果你用的是SQL Server2005及其以上版本 你可以使用 nvarchar(max) 一行大小最多可以达到2GB

mssql中一行的大小是不能够超过8K的,这样就会产生一个错误。
==》
这句话是对的 但是他只是相对于一般的数据类型而言 如果表中包含 text ntext nvarchar(max)等特殊字段类型 则没有这个限制

#10


嗯,是的,因为text在该行只占用16个字节,就是指个路而已。
我有八个列,每个列大约800个字节,用text类型就有点过份了,
但是用varchar的话,若汉字是二字节的,那么总共6400个字节再加上id列,加上日期等一些小列也才6800字节。若有些汉字是三字节的,那就无法保证一定不超过8000字符。
用nvarchar的话那是一定会超过8000字符的,毕竟里面有一些英文字符,若那些算两字节的话就会超出。

在这种情况下每列800字节的东西也用test类型比较好吗?

#11


汉字若是三字节的话,每列可能就不止800个字节。
汉字是两字节的话,每列可能只有600字节,在一些特殊的情况下可能达到700多字节。

#12


其中难受的地方在于0.8K字节的东西用text来保存,心里总是堵得慌。
以前只是大于8K的地方用text来保存。

#13


我有八个列,每个列大约800个字节,用text类型就有点过份了,
但是用varchar的话,若汉字是二字节的,那么总共6400个字节再加上id列,加上日期等一些小列也才6800字节。若有些汉字是三字节的,那就无法保证一定不超过8000字符。
用nvarchar的话那是一定会超过8000字符的,毕竟里面有一些英文字符,若那些算两字节的话就会超出。

====》


页的单个行中的最大数据量和开销是 8,060 字节 (8 KB)。但是,这不包括用 Text/Image 页类型存储的数据。包含 varchar、nvarchar、varbinary 或 sql_variant 列的表不受此限制的约束。
当表中的所有固定列和可变列的行的总大小超过限制的 8,060 字节时,SQL Server 将从最大长度的列开始动态将一个或多个可变长度列移动到 ROW_OVERFLOW_DATA 分配单元中的页
将列移动到 ROW_OVERFLOW_DATA 分配单元中的页后,将在 IN_ROW_DATA 分配单元中的原始页上维护 24 字节的指针。如果后续操作减小了行的大小,SQL Server 会动态将列移回到原始数据页.

SQL Server会自动处理你溢出的长度。。


#14


这里你只要将你的变长字段 设置成nvarchar(4000)就可以了 只要保证你的单个字段不超出8K就好。。

#15


哦,这是sql2005新的功能吗?我在2003server,sql2000下测试时报错了,说该行大小大于8060字节。

#16


引用 15 楼 daddi 的回复:
哦,这是sql2005新的功能吗?我在2003server,sql2000下测试时报错了,说该行大小大于8060字节。

你的建表语句 我看下 ~~~~~

#17


CREATE TABLE [dbo].[test1] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[cont1] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,
[cont2] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,
[cont3] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GO

以上是我测试的一个表,其中cont1,cont2,cont3都是长8000的varchar类型,往里面每个字段都写入略大于6000的英文字母,然后就报错。

报错语句如下:无法创建大小为 18133 的行,该值大于允许的最大值 8060。
语句已终止。 

#18


insert test1
select REPLICATE('a',7000),REPLICATE('a',7000),REPLICATE('a',7000)

去执行下 我这不报错~

#19


每行最长是8060  插入的时候会有警告提示
引用 15 楼 daddi 的回复:
哦,这是sql2005新的功能吗?我在2003server,sql2000下测试时报错了,说该行大小大于8060字节。

#20


服务器: 消息 511,级别 16,状态 1,行 1
无法创建大小为 21019 的行,该值大于允许的最大值 8060。
语句已终止。

#21


我的有报错,不明白原因。

#22


引用 21 楼 daddi 的回复:
我的有报错,不明白原因。

2000我没环境 你去查下相关文档~

#23


在2000中 没有办法突破  SQL Server2000中最大数据行的大小为8060(我们可以使用的大小为8039),即创建表时所有列的大小总和不能超过8060。 这个限制

介意把字段拆分到多个表 用关键字段联接使用~

#24


好,谢谢老大,结贴。

#25


都没怎么用过MySQL~

#26


服务器级别,确定方法很简单。 
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和   校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为   校对规则添加--default-collation。 
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个   校对规则,那就与--default-charset=latin1   --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。 
因此,以下三个命令有相同的效果: 

shell>   mysqld 

shell>   mysqld   --default-character-set=latin1 

shell>   mysqld   --default-character-set=latin1   \ 

                      --default-collation=latin1_swedish_ci 

更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如: 

shell>   ./configure   --with-charset=latin1 
或者: 

shell>   ./configure   --with-charset=latin1   \ 

                      --with-collation=latin1_german1_ci 

mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。 

当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。 

#27


服务器级别,确定方法很简单。 
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和   校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为   校对规则添加--default-collation。 
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个   校对规则,那就与--default-charset=latin1   --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。 
因此,以下三个命令有相同的效果: 

shell>   mysqld 

shell>   mysqld   --default-character-set=latin1 

shell>   mysqld   --default-character-set=latin1   \ 

                      --default-collation=latin1_swedish_ci 

更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如: 

shell>   ./configure   --with-charset=latin1 
或者: 

shell>   ./configure   --with-charset=latin1   \ 

                      --with-collation=latin1_german1_ci 

mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。 

当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。 

#28


自己先到网上去搜索一下,资料很多的,我当时就是在网上找的,细节忘了  ^_^

#29


什么呀就结贴? 问题没解决啊,我存汉语没事,存英语提示超出.我认为是编码问题.

#1


排序规则  默认的是什么?

用unicode 可以用类型 nvarchar  nchar等

#2


服务器级别,确定方法很简单。
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为 校对规则添加--default-collation。
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个 校对规则,那就与--default-charset=latin1 --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。
因此,以下三个命令有相同的效果:

shell> mysqld

shell> mysqld --default-character-set=latin1

shell> mysqld --default-character-set=latin1 \

           --default-collation=latin1_swedish_ci

更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如:

shell> ./configure --with-charset=latin1
或者:

shell> ./configure --with-charset=latin1 \

           --with-collation=latin1_german1_ci

mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。

当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。

#3


MsSQL中汉字默认编码是UTF8还是GBK?应该怎样调整? 
看错了。。。看成MYSQL~

#4


排序规则默认Chinese_PRC_CI_AS
通过这里可以看出其中的汉字是UTF编码还是GBK编码吗?

#5


MsSQL中汉字默认编码是UTF8还是GBK?应该怎样调整?
引用 2 楼 feixianxxx 的回复:
服务器级别,确定方法很简单。
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和   校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为   校对规则添加--default-collation。
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin……

#6


要用汉字的话  就用unicode存储 nvarchar
引用 4 楼 daddi 的回复:
排序规则默认Chinese_PRC_CI_AS
通过这里可以看出其中的汉字是UTF编码还是GBK编码吗?

#7


引用 4 楼 daddi 的回复:
排序规则默认Chinese_PRC_CI_AS
通过这里可以看出其中的汉字是UTF编码还是GBK编码吗?

排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:
  Chinese_PRC_CS_AI_WS 
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则,按拼音排序。
Chinese_PRC_Stroke 表示按汉字笔画排序;

排序规则的后半部份即后缀 含义: 
  _BIN 二进制排序 
  _CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)
  _AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)
  _KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive)
  _WI(WS) 是否区分宽度 WI不区分,WS区分(width-insensitive/width-sensitive) 
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。

#8


你好,谢谢,但是我输入的东西中大约一半是汉字,一半是英文。
而且现在的问题是一行数据总大小,
若为GBK编码,汉字每编码为2字节,我的数据中mssql中一行的总大小如何都会在6800字节以内。
但是对UTF-8格式的汉字而言,很多汉字的编码是3个字节,这样下来一行的总大小就可能超过8K,而mssql中一行的大小是不能够超过8K的,这样就会产生一个错误。

若想避免这个错误,最佳的方法就是在mssql中使用GBK编码,但是我不知道怎么控制。

#9


引用 8 楼 daddi 的回复:
你好,谢谢,但是我输入的东西中大约一半是汉字,一半是英文。
而且现在的问题是一行数据总大小,
若为GBK编码,汉字每编码为2字节,我的数据中mssql中一行的总大小如何都会在6800字节以内。
但是对UTF-8格式的汉字而言,很多汉字的编码是3个字节,这样下来一行的总大小就可能超过8K,而mssql中一行的大小是不能够超过8K的,这样就会产生一个错误。

若想避免这个错误,最佳的方法就……

如果是nvarchar字段类型 使用的是Unicode编码类型 一个字符占2个字节 
所以最多使用 nvarchar(4000)

当然 如果你用的是SQL Server2005及其以上版本 你可以使用 nvarchar(max) 一行大小最多可以达到2GB

mssql中一行的大小是不能够超过8K的,这样就会产生一个错误。
==》
这句话是对的 但是他只是相对于一般的数据类型而言 如果表中包含 text ntext nvarchar(max)等特殊字段类型 则没有这个限制

#10


嗯,是的,因为text在该行只占用16个字节,就是指个路而已。
我有八个列,每个列大约800个字节,用text类型就有点过份了,
但是用varchar的话,若汉字是二字节的,那么总共6400个字节再加上id列,加上日期等一些小列也才6800字节。若有些汉字是三字节的,那就无法保证一定不超过8000字符。
用nvarchar的话那是一定会超过8000字符的,毕竟里面有一些英文字符,若那些算两字节的话就会超出。

在这种情况下每列800字节的东西也用test类型比较好吗?

#11


汉字若是三字节的话,每列可能就不止800个字节。
汉字是两字节的话,每列可能只有600字节,在一些特殊的情况下可能达到700多字节。

#12


其中难受的地方在于0.8K字节的东西用text来保存,心里总是堵得慌。
以前只是大于8K的地方用text来保存。

#13


我有八个列,每个列大约800个字节,用text类型就有点过份了,
但是用varchar的话,若汉字是二字节的,那么总共6400个字节再加上id列,加上日期等一些小列也才6800字节。若有些汉字是三字节的,那就无法保证一定不超过8000字符。
用nvarchar的话那是一定会超过8000字符的,毕竟里面有一些英文字符,若那些算两字节的话就会超出。

====》


页的单个行中的最大数据量和开销是 8,060 字节 (8 KB)。但是,这不包括用 Text/Image 页类型存储的数据。包含 varchar、nvarchar、varbinary 或 sql_variant 列的表不受此限制的约束。
当表中的所有固定列和可变列的行的总大小超过限制的 8,060 字节时,SQL Server 将从最大长度的列开始动态将一个或多个可变长度列移动到 ROW_OVERFLOW_DATA 分配单元中的页
将列移动到 ROW_OVERFLOW_DATA 分配单元中的页后,将在 IN_ROW_DATA 分配单元中的原始页上维护 24 字节的指针。如果后续操作减小了行的大小,SQL Server 会动态将列移回到原始数据页.

SQL Server会自动处理你溢出的长度。。


#14


这里你只要将你的变长字段 设置成nvarchar(4000)就可以了 只要保证你的单个字段不超出8K就好。。

#15


哦,这是sql2005新的功能吗?我在2003server,sql2000下测试时报错了,说该行大小大于8060字节。

#16


引用 15 楼 daddi 的回复:
哦,这是sql2005新的功能吗?我在2003server,sql2000下测试时报错了,说该行大小大于8060字节。

你的建表语句 我看下 ~~~~~

#17


CREATE TABLE [dbo].[test1] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[cont1] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,
[cont2] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,
[cont3] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GO

以上是我测试的一个表,其中cont1,cont2,cont3都是长8000的varchar类型,往里面每个字段都写入略大于6000的英文字母,然后就报错。

报错语句如下:无法创建大小为 18133 的行,该值大于允许的最大值 8060。
语句已终止。 

#18


insert test1
select REPLICATE('a',7000),REPLICATE('a',7000),REPLICATE('a',7000)

去执行下 我这不报错~

#19


每行最长是8060  插入的时候会有警告提示
引用 15 楼 daddi 的回复:
哦,这是sql2005新的功能吗?我在2003server,sql2000下测试时报错了,说该行大小大于8060字节。

#20


服务器: 消息 511,级别 16,状态 1,行 1
无法创建大小为 21019 的行,该值大于允许的最大值 8060。
语句已终止。

#21


我的有报错,不明白原因。

#22


引用 21 楼 daddi 的回复:
我的有报错,不明白原因。

2000我没环境 你去查下相关文档~

#23


在2000中 没有办法突破  SQL Server2000中最大数据行的大小为8060(我们可以使用的大小为8039),即创建表时所有列的大小总和不能超过8060。 这个限制

介意把字段拆分到多个表 用关键字段联接使用~

#24


好,谢谢老大,结贴。

#25


都没怎么用过MySQL~

#26


服务器级别,确定方法很简单。 
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和   校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为   校对规则添加--default-collation。 
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个   校对规则,那就与--default-charset=latin1   --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。 
因此,以下三个命令有相同的效果: 

shell>   mysqld 

shell>   mysqld   --default-character-set=latin1 

shell>   mysqld   --default-character-set=latin1   \ 

                      --default-collation=latin1_swedish_ci 

更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如: 

shell>   ./configure   --with-charset=latin1 
或者: 

shell>   ./configure   --with-charset=latin1   \ 

                      --with-collation=latin1_german1_ci 

mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。 

当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。 

#27


服务器级别,确定方法很简单。 
当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和   校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为   校对规则添加--default-collation。 
如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个   校对规则,那就与--default-charset=latin1   --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。 
因此,以下三个命令有相同的效果: 

shell>   mysqld 

shell>   mysqld   --default-character-set=latin1 

shell>   mysqld   --default-character-set=latin1   \ 

                      --default-collation=latin1_swedish_ci 

更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如: 

shell>   ./configure   --with-charset=latin1 
或者: 

shell>   ./configure   --with-charset=latin1   \ 

                      --with-collation=latin1_german1_ci 

mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。 

当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。 

#28


自己先到网上去搜索一下,资料很多的,我当时就是在网上找的,细节忘了  ^_^

#29


什么呀就结贴? 问题没解决啊,我存汉语没事,存英语提示超出.我认为是编码问题.