• 关于

    汉字存储字节

    的搜索结果

回答

1、char(n)类型     char类型时定长的类型,即当定义的是char(10),输入的是"abc"这三个字符时,它们占的空间一样是10个字节,包括7个空字节。当输入的字符长度超过指定的数时,char会截取超出的字符。而且,当存储char值时,MySQL是自动删除输入字符串末尾的空格。     char是适合存储很短的、一般固定长度的字符串。例如,char非常适合存储密码的MD5值,因为这是一个定长的值。对于非常短的列,char比varchar在存储空间上也更有效率。 2、varchar(n)类型      varchar(n)类型用于存储可变长的,长度为n个字节的可变长度且非Unicode的字符数据。n必须是介于1和8000之间的数值,存储大小为输入数据的字节的实际长度+1/2. 比如varchar(10), 然后输入abc三个字符,那么实际存储大小为3个字节。除此之外,varchar还需要使用1或2个额外字节记录字符串的长度,如果列的最大长度小于等于255字节(是定义的最长长度,不是实际长度),则使用1个字节表示长度,否则使用2个字节来表示。     所以,从空间上考虑,varcahr较合适;从效率上考虑,用char合适。二者之间需要权衡。     除了char和varchar之外,还有一种nchar、nvarchar(n),包含n个字符的可变长度为unicode字符数据。n的值必须介于1~4000之间,直接的存储大小是说输入字符个数的两倍,所输入的数据字符长度可以为零。从名字上看,多了一个n,表示存储的是unicode数据类型的字符,这是为了存储汉字用的,1个英文字母或者数字占用的字符为1个,一个汉字占用2个字符,那么对于有中英文混合的字符串,我们需要定义nvarchar类型。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。 还有,text类型。其存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

AA大大官 2020-03-31 13:07:28 0 浏览量 回答数 0

问题

mysql数据库中汉字占用字节数的问题

落地花开啦 2019-12-01 19:53:59 1568 浏览量 回答数 1

问题

java的char类型只有两个字节为什么可以存储汉字?

蛮大人123 2019-12-01 20:13:56 2131 浏览量 回答数 2

阿里云爆款特惠专场,精选爆款产品低至0.95折!

爆款ECS云服务器8.1元/月起,云数据库低至1.5折,限时抢购!

问题

mysql 数据库中varchar的长度与字节

蛮大人123 2019-12-01 19:50:07 1100 浏览量 回答数 1

问题

mysql中varchar(M),M的最大值问题

蛮大人123 2019-12-01 19:49:08 1137 浏览量 回答数 1

回答

可见,varchar(5)能存储5个字符,不管是数字,字母,还是汉字该表中varchar类型的字段能容纳的最大字符数21842是怎么得来的?21842 = (65535-1-2-4)/3MySQL要求一个行的定义长度不能超过65535(包括多个字段),所以有65535.varchar的最大有效长度取决于最大行大小.减1的原因是实际行的存储从第2个字节开始.减2的原因是varchar头部的2个字节表示长度.减4的原因是字段id的int类型占用4个字节.除以3的原因是一个utf8字符占用3个字节.如果你在test2表里把varchar(21842)改为varchar(21844),那么就会报以下错误:1118 - Row size too large.The maximum row size for the used table type, not counting BLOBs, is 65535.This includes storage overhead, check the manual.You have to change some columns to TEXT or BLOBs.MySQL中char,varchar与text类型的选用:知道固定长度的用char,比如MD5串固定是32位.经常变化的字段用varchar.超过255字符的只能用varchar或者text,不能用char.能用varchar的地方不用text.

蛮大人123 2019-12-02 01:44:10 0 浏览量 回答数 0

回答

NVARCHAR2和VARCHAR2的区别,从使用角度来看区别在于: NVARCHAR2在计算长度时和字符集相关, 例如数据库是中文字符集时,以长度10为例,则 NVARCHAR2(10)可以存进去10个汉字,如果用来存英文也只能存10个字符。 VARCHAR2(10)只能存进5个汉字,英文则可以存10个 。 *********************************************************************** CHAR固定长度字符域,最大长度可达2000个字节 NCHAR多字节字符集的固定长度字符域,长度随字符集而定,最多为2000个字符或2000个字节 VARCHAR2可变长度字符域,最大长度可达4000个字符 NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节 *********************************************************************** varchar,nvarchar, varchar2,nvarchar2的区别 四个类型都属于变长字符类型: varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。 nvarchar和nvarchar2的区别和上面一样, 与上面区别在于是根据Unicode 标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。 ***************************************************************************************************************** char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节; char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字。 char适用于长度比较固定的,一般不含中文的情况 ***************************************************************************************************************** varchar/varchar2 varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。 varchar同样区分中英文,这点同char。 varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串 varchar/varchar2适用于长度不固定的,一般不含中文的情况 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节; 2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理; 3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 ***************************************************************************************************************** nvarchar/nvarchar2 nvarchar和nvarchar2是长度不固定的 nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数 nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节 nvarchar/nvarchar2适用于存放中文 答案来源网络,供参考,希望对您有帮助

问问小秘 2019-12-02 03:05:03 0 浏览量 回答数 0

回答

@皮总 @红薯###### 第一问:使用mysqlimport导入数据。最好不要使用insert into。 第二问:如果存储是{char(15), unsigned tinyint }, Utf8(1Bytes to 3Bytes per character),tinyint 1Bytes 。那么(3*15 + 1)× 1000000 / (1024*1024.0) 大约 44M大小。 第三问:给主键添加索引, 更新planner statistics。而且根据某个字段合理分区,这样查询会很快。 第四问:不知道,但是我想不存在这样的汉字不在unicode中 ######回复 @Lesus : 原来如此 感谢回答~######回复 @陈昊 : 数据库中的静态信息,例如MySQL中MyISAM表包含了一些行数等静态信息。count(*)时就直接取出就可以了。######planner statistics是?######姓氏分区,图方便,hash分区###### 第四问:不知道,但是我想不存在这样的汉字不在unicode中 汉字好像有7万多个,而 Unicode 按极限来算只能表示65536个字符,所以不在 Unicode 里的汉字很多。 ######人家问我有哪些,百度没百度出来,谁知道 啊######Thx, 可能使用专门为汉字设计的gbk更好###### 那些汉字不能存在char[]中,不在unicode中 回答生僻字就ok了。。本来这个问题就没法具体回答 ######Unicode 编码能表示所有的汉字, 所以,我也认为, 不存在用unicode无法表示的汉字.###### 第一个问题: try(BufferedReader reader = new BufferedReader(new FileReader("filename"))){ String line = null; while((line = reader.readeLine()!=null){ String[] strs=line.split("\\t"); //根据strs值构建sql,或者批处理插入 } }catch(Exception e){ e.printStackTrace(); } 第二个问题: 一个汉字一般占2个字节,一个字母占一个1个字节,你这种数据100万左右的记录,即便有复杂的索引,也应该不会超过20M。 第三个问题: 可以使用count(0)代替count(*)来提高一点效率,你所说的2亿条记录,可以采用分表,建立索引的办法提高效率。 第四个问题: 没太看到你的意思~汉字的Unicode编码范围:\u4E00-\u9FA5 \uF900-\uFA2D,超出这个范围就不是汉字了。 你这种需求,可以直接将文本导出mysql dump工具需要的格式,使用mysql bin目录下的dump工具导入表中,这种效率更高。 ######学习了。

kun坤 2020-06-06 15:29:24 0 浏览量 回答数 0

回答

request这里其实在取之前,程序内l默认会自动按iso-885以9-1来解码,由于它是单字节编码,而汉字是双字节,所以会出现乱码。所以这时有request取得参数之前,先设置解码的格式。才不会乱码。等你取得时候才会解码的。才去掉%解析请求的URL是在org.apache.coyote.HTTP11.InternalInputBuffer的pareRequestLine方法中进行的,这个方法把传过来的byte[]设置到org.apache.coyote.Request的相应属性。注意,这里存储的URL依然是byte格式(也就是加%),真正转换成char是发生在org.apache.catalina.connector.CoyoteAdapter的convertURI方法中完成的。所以,有中文编码时,最好将URIEncoding设置成UTF-8编码。解码是getparameter被第一次调用时发生的。它会调用org.apache.catalina.connector.Request中的paseParameters方法,这个方法将会对GET或POST的数据进行解码。(纯手打,累死了。。。。。)

a123456678 2019-12-02 02:03:19 0 浏览量 回答数 0

问题

深入分析字符编码之五-常见问题分析

夏天的日子 2019-12-01 21:13:23 4211 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅