java字符编码

java中的文字是16位整数(2个byte)序列,文件中的数据是8位的byte序列,如何将字符char转为byte —— 编码

字符编码(char encoding):将字符序列拆分为byte序列的拆分方法称为字符的编码

(1)UTF-16BE:将字符切两半,String.getByte("utf-16be"),支持65535个字符,中英文都是两个byte,定长编码,缺点是,英文浪费时间,只能支持unicode 4.0

(2)UTF-8:采用的是变长编码,1~4字节,按照数值从小到大采用1~4字节编码

  0~127:1字节(英文)

  128~2047:2字节(符号等等)

  2048~65535:3字节(包含2万多中文)

  65536~1114111:4字节编码

  支持全部的unicode(11万字),如果文字中英文为主体,编码最短!UTF-8是国际化最优方案。

(3)GBK:中国国家标准,是变长编码,英文1字节,中文2字节,支持2万多中英文,是中国本地化最优方案,GB2312是GBK的子集(6千多字符)

(4)ISO8859-1:就是ASCII,只支持英文,256个,不支持中文,会将一个char转换为byte(高8位丢弃)

如何查询本地编码:

String encoding = System.getProperty("file.encoding");

.getBytes();是按照本地计算机默认编码

.getBytes("utf-8");将字符串进行编码,指定编码,此处编码为UTF-8

原文地址:https://www.cnblogs.com/zhuyj/p/10293420.html

时间: 2024-11-11 18:27:36

java字符编码的相关文章

java字符编码详解

引用自:http://blog.csdn.net/jerry_bj/article/details/5714745 GBK.GB2312.iso-8859-1之间的区别 GB2312,由中华人民共和国政府制定的,简体汉字编码规范,大陆所有计算机中的简体中文,都使用此种编码格式.目前,我也不知道还有另外的简体汉字编码规范.与此对应的还有BIG5,是中华民国政府制定的,繁体汉字的编码规范,一般应用于海外计算机的繁体中文显示.所谓的繁体中文Windows,简体中文Windows,指的就是采用BIG5和

【字符编码】Java字符编码详细解答及问题探讨

一.前言 继上一篇写完字节编码内容后,现在分析在Java中各字符编码的问题,并且由这个问题,也引出了一个更有意思的问题,笔者也还没有找到这个问题的答案.也希望各位园友指点指点. 二.Java字符编码 直接上代码进行分析似乎更有感觉.   运行结果:   说明:通过结果我们知道如下信息. 1. 在Java中,中文在用ASCII码表示为3F,实际对应符号'?',用ISO-8859-1表示为3F,实际对应符号也是为'?',这意味着中文已经超出了ASCII和ISO-8859-1的表示范围. 2. UTF

Java 字符编码归纳总结

String newStr = new String(oldStr.getBytes(), "UTF-8");       java中的String类是按照unicode进行编码的,当使用String(byte[] bytes, String encoding)构造字符串时,encoding所指的是bytes中的数据是按照那种方式编码的,而不是最后产生的String是什么编码方式,换句话说,是让系统把bytes中的数据由encoding编码方式转换成unicode编码.如果不指明,by

java字符编码转换过程(转)

在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这个表示在不通OS下,返回的东西不一样! String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如 byte[] b_gbk = "中".getBytes("GBK"); byte[] b_utf8 = "中".getBytes("UTF-8"); by

java字符编码转换

在开发的过程中,字符编码常常令我们头痛.经常会出现各种各样的乱码.下面就介绍java的编码转换和常见的乱码是使用什么样的编码去读取的: 先看一张图片: 在看看java中如何处理编码的转换: package com.test; /** * 字符串编码转换 * @author Herman.xiong * @date 2015年7月16日09:36:59 * @version V3.0 * @since Tomcat6.0,Jdk1.6 * @copyright Copyright (c) 2015

Java 字符编码与解码

1.字符编码的发展历程 ①.ASCII 码 因为计算机只认识数字,所以我们在计算机里面的一切数据都是以数字来表示,因为英文字符有限,所以规定使用的字节的最高位是 0,每一个字节都是以 0-127 之间的数字来表示.比如 A 对应 65,a 对应 97.这便是 美国标准信息交换码,ASCII String str = new String("Aa"); byte[] strASCII = str.getBytes("ASCII"); System.out.printl

JAVA字符编码测试

几点注意: 1,ASCII码和ISO-8859-1都是单字节编码,ASCII码能表示128个字符,ISO-8859-1总共能表示256个字符.都不能表示中文,如果中文字符或其它不在IOS-8859码值范围内的字符会统一用3f表示(显示为"?", 通常所说的"黑洞"): 2,GBK兼容GB2312,是双字节编码,GB2312包含6763个汉字,GBK包含21003个汉字: 3,UTF-16为定长双字节编码,大大简化了字符串的操作,但是会浪费存储空间.JAVA以UTF-

Java字符编码的转化问题

概述: 我想字符串的编码问题的确会困扰到非常多开发人员.我近期也是被困扰到了. 问题是这种,我们通过二维码扫描来获得二维码中的信息.可是.我们的二维码的产生过程却是"多样化"的.即在产生二维码的时候是以不同的字符串编码类型进行编码的.比方,GBK.GB2312.UTF-8等等.而这些不同的编码类型会产生不同的字节.在Java中.GBK和GB2312都是1个汉字占2个字节,UTF-8是1个汉字占3个字节.而ISO编码则是1上汉字1个字节.这样一来,我们在扫描二维码的时候就会出现一些&qu

java字符编码,字符转码

编码:String->byte[]; str.getBytes(charsetName) 解码:byte[]->String; new String(byte[],charsetName); package pack; import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.util.Arrays; public class Demo{ /** * 用gbk编码 utf解码