Java中文字符所占的字节数

Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。我们可以通过String类的getBytes(String charsetName)方法来获取到字符串以指定编码方式编码后所得到的字节数组,然后字节数组的长度就是该字符串在指定编码方式下所占的字节数。下面为一个测试示例:

public static void main(String []args) throws UnsupportedEncodingException  {
// 运行结果:2
System.out.println("测试".getBytes("ISO8859-1").length);
// 运行结果:4
System.out.println("测试".getBytes("GB2312").length);
// 运行结果:4
System.out.println("测试".getBytes("GBK").length);
// 运行结果:6
System.out.println("测试".getBytes("UTF-8").length);
}

  注意:String类的不带参数的getBytes()方法会以程序所运行平台的默认编码方式为准来进行转换,在不同平台下就会有不同的结果,因此建议使用指定编码方式的getBytes(String charsetName)方法。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-28 20:28:28

Java中文字符所占的字节数的相关文章

收集一些常用的正则表达式(匹配中文字符、匹配双字节字符、匹配HTML标记、匹配空行 and so on~~~)_正则表达式

正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番.我将一些常用的表达式收藏在这里,作备忘之用.本贴随时会更新,请持续关注本站. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"a

java中一个汉字和一个字母所占内存字节比较以及后台验证的减半处理

  基本概念 我们一般理解java中 一个字符char占2个字节byte 一个汉字占2个字节byte 一个字母占1个字节byte   其他情况 对于汉字来说,采用gbk编码占两字节,采用utf8编码占三个字节.   String的length()方法 String s1 = "aa"; String s2 = "a好"; s1.length() s2.length() 答案都是2,因为该方法是返回字符的个数,并不是内存中的字节数.   数据库应用 java的编码不会

c++ 怎样获取一串字符串的字符数,不是字节数

问题描述 c++ 怎样获取一串字符串的字符数,不是字节数 想获取一串包括中文的字符串的字符数,请问有哪个函数可以调用................ 解决方案 看看http://blog.csdn.net/infoworld/article/details/38119229 解决方案二: #include<iostream> using namespace std; int main() { int count = 0; char* buffer = "爱神as箭34按.实"

iOS UITextField最大字符数和字节数的限制详解_IOS

前言 这里我给大家几组测试用例可以一试,为啥不好用.      1.限制10个字节,输入2个Emoj之后是8个字节(一个Emoj是4个字节),此时再输入一个中文,看看结果如何(中文的UTF8占3个字节)      2.限制5个字符,一个Emoj是2个字符,其他都是一个.此时输入两个Emoj,再输入中文,然后中文联想试试. 就目前的情况来说,看了很多资料,并没有一个通用的能限制字符数和字节数的封装.这里全面进行了总结,并进行了封装.欢迎大家下载. 一. 字符限制 1. 错误方法 常见的这种方法是错

看到有人问如何取中文为2的指定字符串字节数,研究一下:

函数:strLeft(str,num)用途:取指定字符串左边数num个字符,中文作为2个字符出现.说明:如最后一个汉字取则多,不取则少,则不取,即实际取字符数为num-1个.        如字符串第一个字符为中文,且num=1,则返回空字符串.环境:在Win 2K Server + IIS5.0上运行通过,@LANGUAGE=VBSCRIPT'--------------------*****START*****--------------------FUNCTION strLeft(str,

Js判断中文限制文字字节数

  Js限制文字字节本来比较容易实现,唯一值得注意的就是中文字符的判断,因为中文和英文所占的字节不一样,英文只占1个字节,而中文则需要2个,以下JavaScript函数是平时做项目时写的,经过了多次修正,应该比较准确了,后面会告诉你使用方法.先来主函数代码: checkbyte.js代码: 下面是例子,使用前请引入checkbyte.js value: 值 byteLength:数据库字节长度 title:字段中文名称 attribute:属性名称 使用说明: 1.onkeyup="limitL

Javascript 计算字符串在localStorage中所占字节数_javascript技巧

最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是UTF-8和UTF-16.因此本文只对这两种编码进行讨论. 下面这个定义摘自维基百科(http://zh.wikipedia.org/zh-cn/UTF-8),做了部分删减. UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,可以表示Unicode

使用Java将中文字符转换成Unicode编码

  这两天操作XML使用到了Jdom,在创建XML文件并输出到硬盘的时候遇到一个中文编码的问题:Jdom默认输出的XML编码是UTF-8,但是文档中如果出现中文字符那么该中文字符就会变成乱码,造成XML文件无法被正确解析. UTF-8应该是可以用来表示中文的吧?我不知道这是不是Jdom的一个BUG(Jdom 1.0,beta了10次的产物哦!).我google了一下,大家解决这个问题的办法无非是把Jdom的输出字符集改为GBK或者GB2312,但是这样就会有一些副作用,如果在没有特定字符集(GB

ThinkSNS特有需求之--英文字符占 0.5 个,中文字符占 1 个

ThinkSNS后端框架使用laravel,每周和 laravel master 保持同步,而后台和 html 5 则采用 vue 开发.语言特性方面,采用 php 7 的严格模式. 言归正传,之所以写继篇,其实是来检讨的,上一次发表了<ThinkSNS+ 如何计算字符显示长度>后,有网友几经测试后告知str_word_count 有问题. 根据ThinkSNS+ 的进度安排,最近在研发支付功能,所以只能使用周末的时间做了一个兼容性更好的计算方法. 需求 重新说下需求:在我天朝 PM 经常会提