按照字符和字节截取内容的区别

最近在项目中截取指定字节位置和字节长度的字符串时遇到的坑,在这里总结一下:

String s="测试内容";

一、两个方法的区别

s.length()   获取字符长度

s.getBytes().length  获取操作系统默认编码字节长度

获取指定编码的字节长度,不同的编码字节长度不一样

s.getBytes("GBK").length

s.getBytes("UTF-8").length

二、截取指定位置和长度的字符串

1、通常用到最多的就是,按照字符起始位置和结束位置来截取指定字符串

s.substring(beginIndex, endIndex)

2、如果是按照字节的起始位置和指定字节长度来截取的话,就按照下面的方法,这里要指定编码格式

byte[] b = s.getBytes("GBK");

new String(b,offset,length,"GBK");

时间: 2024-08-05 15:30:19

按照字符和字节截取内容的区别的相关文章

Java补缺补漏—字符、字节的概念及其区别

首先我们先看一下这个问题:“Java语言中字符串“学Java”所占的内存空间是几个字节?”,要回答这个问题我们就必须先要清楚什么是“字节”什么是“字符”. 字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位.字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制,它是一 个8位的二进制数,是一个很具体的存储空间. 字符:人们使用的记号,抽象意义上的一个符号. '1', '中', 'a', '$', '¥', …… 谈到字符就不得不提ANSI及

EditText字符限制-字节数限制-一次截取超过限制部分

EditText字符限制-字节数限制-一次截取超过限制部分 一.需求描述: 转载请注明出处:http://www.cnblogs.com/wangqx/p/6096272.html 对EditText字符个数限制,当用户输入字符串超长度过指定值时,不允许输入,并给出提示. 二.实现描述: 看了网上关于EditText字符串限制的一些例子,但都过于简单,不是想要的,故自己实现了下. 和网上例子功能对比: 1.此demo是对字符字节数的限制,无需区分是中文还是英文,相比对字符个数的限制, 对字节数限

字符与字节的区别

(一)"字节"的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位. (二)"字符"的定义 字符是指计算机中使用的文字和符号,比如1.2.3.A.B.C.~!·#¥%---*()--+.等等. (三)"字节"与"字符" 它们完全不是一个位面的概念,所以两者之间没有"区别"这个说法.不同编码里,字符和字节的对应关系不同: ①ASCII码中,一个英文字母(不分

转载:字符与字节有什么区别

转载自:http://blog.csdn.net/andyzhaojianhui/article/details/53785656 (一)"字节"的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位. (二)"字符"的定义 字符是指计算机中使用的文字和符号,比如1.2.3.A.B.C.~!·#¥%---*()--+.等等. (三)"字节"与"字符" 它们完全不是一个位面的概念

php中字符与字节的区别

字符: 字符是可使用多种不同字符方案或代码页来表示的抽象实体.例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字节序列.公共语言运行库使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)表示字符. php在UTF-8编码下,一个汉字占3个字符,gbk编码下只占2个字符. 字节(Byte): 字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 应用: 如果数据库中表为UTF8

字符、字节和编码

摘要:介绍了字符与编码的发展过程,相关概念.举例Java实际应用中,编码的实现方法.最后,讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱码的方法. 1.编码问题的由来及相关概念 1.1字符与编码的发展 从计算机对多国语言的支持角度看,大致可以分为三个阶段:   系统内码 说明 系统 阶段一 ASCII 计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示 英文DOS 阶段二 ANSI编码(本地化) 为使计算机支持更多语言,通常使用0x80~0xFF范围的2个

java基础知识回顾之---java String final类普通方法的应用之“按照字节截取字符串”

/*需求:在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符.但对应的字节数不同,一个汉字占两个字节.定义一个方法,按照最大的字节数来取子串.如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,那么半个就要舍弃.如果去四个字节就是“ab你”,取五个字节还是“ab你”.*/ 代码:其实是一个解码和编码的问题,要明白UTF-8码表和GBK码表的区别,UTF-8中用三个字节代表一个汉字,GBK使用2个字节代表一个汉字. 且在码表中都是用数字存放这些汉字.

java String长度与varchar长度匹配理解(字符和字节长度理解)

string中的length()长度,返回的是char的数量,每个char可以存储世界上任何类型的文字和字符,一个char 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转

计算机“字符”,“字节”以及各单位说明

字符与字节 ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间.一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制.最小值0,最大值255.如一个ASCII码就是一个字节. UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节. Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节. 符号:英文标点占一个字节,中文标点占两个字节.举例:英文句号"."占1个字节的大小,中文句号&qu