千家信息网

java中的编码转化方式都有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"java中的编码转化方式都有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java中的编码转化方式都有哪些"吧!一、编码转换原
千家信息网最后更新 2026年11月02日java中的编码转化方式都有哪些

这篇文章主要讲解了"java中的编码转化方式都有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java中的编码转化方式都有哪些"吧!


一、编码转换原理

1、为什么需要编码

很早之前计算机存储的就只是英文,一共26个英文字母。而且计算机存储信息的最小单位是一个字节8位,能够表示256个字符。这对于早起的英文来说足够了。即使是加上一些常见符号也足够。

后来随着时间的发展,中国、日本等国的计算机也开始蓬勃发展,于是计算机不仅仅要存储英文了,也开始存储中文了。但是中文我们都知道几万个太多了,一个字节肯定放不下。怎么办呢?一个字节表示不下,那就多用几个字节就好了。这几个字节在存储的时候还要再转化为bit,这时候就要涉及到编码了。

2、编码方式

计算中提供了多种编码方式,常见的有 ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 等。它们规定了转化的规则,按照这个规则就可以让计算机正确的表示我们的字符。

像GB2312、GBK、UTF-8、UTF-16等很多种方式都可以表示汉字,他们有什么区别呢?

(1)GB2312

它是双字节编码,总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682 个符号,从 B0-F7 是汉字区,包含 6763 个汉字。

(2)GBK

它的编码范围是 8140~FEFE(去掉 XX7F)总共有 23940 个码位,它能表示 21003 个汉字。

(3)UTF-8

而 UTF-8 采用了一种变长技术,每个编码区域有不同的字码长度。不同类型的字符可以是由 1~6 个字节组成。

3、转码方式

(1)IO流

这里就是面试问题的核心答案了,编码的目的上面已经说了,主要是字节和字符之间的转化。既然涉及到字节和字符很容易我们就能想到java中的IO流。也就是说java中编码的转换其实就是IO流中的类来实现的。

最核心的就是上面几个类,当然这里只是给出了输入的一部分,还有一些输出的类。

(2)String

String类中也提供了一些转码的方法。下面我们会通过实例来说明。为什么String可以实现呢?这是因为String底层保存的其实就是一个一个字节,而且String还有方法直接转化为字符。所以String肯定也能实现。

(3)Charset

这个Charset是javaNIO中的一个类,整个流程就是读取数据,然后转化为byte,也就是字符。然后重新编码成字符就OK了。

下面我们使用代码来实现一下:

二、代码实现

1、IO流

    public void convertionFile() throws IOException {
File file = new File("D://fdd/java的架构师技术栈.txt");
FileInputStream fis = new FileInputStream(file);
InputStreamReader inReader = new InputStreamReader(fis, "gbk");
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter outReader = new OutputStreamWriter(fos, "utf-8");
}

2、String

    public void convertionString() throws UnsupportedEncodingException {
String s = "java的架构师技术栈";
// 正常情况下转码的过程
byte[] b = s.getBytes("gbk");// 编码
String sa = new String(b, "gbk");// 解码
System.out.println(sa);
// 错误状态下转码的过程
b = sa.getBytes("utf-8");// 编码
sa = new String(b, "utf-8");// 解码
System.err.println(sa);
}

3、Charset

    public void convertionCharset() throws IOException {
Charset charset = StandardCharsets.UTF_8;
// 从字符集中创建相应的编码和解码器
CharsetEncoder encoder = charset.newEncoder();
CharsetDecoder decoder = charset.newDecoder();
// 构造一个buffer
CharBuffer charBuffer = CharBuffer.allocate(64);
charBuffer.put('A');
charBuffer.flip();
// 将字符序列转换成字节序列
ByteBuffer bb = encoder.encode(charBuffer);
// 将字节序列转换成字符序列
bb.flip();
CharBuffer cb = decoder.decode(bb);
}

感谢各位的阅读,以上就是"java中的编码转化方式都有哪些"的内容了,经过本文的学习后,相信大家对java中的编码转化方式都有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

编码 字节 字符 方式 就是 计算机 存储 序列 UTF-8 汉字 英文 技术 符号 utf-8 学习 不同 也就是 代码 内容 只是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 中国互联网科技工作委员会毛军 科技互联网公司装修 奇酷互联网科技公司 佰商互联网科技有限公司 深圳市运趣互联网科技有限公司 恒银科技与互联网金融 佳云科技和互联网广告 互联网科技与管理 重庆互联网医院沙龙医盟信息科技 昭通互联网科技选哪家 消费医药和互联网科技 佛山市拉法互联网科技有限公司 南博望互联网科技有限公司 产业互联网科技服务公司 唯美互联网科技 盐城市攀科互联网科技有限公司 上海互联网科技园景观 互联网的黑科技实验室 小牛互联网科技有限公司地址 互联网科技公司起名 互联网金融与金融科技 紫鲸互联网科技 银优互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 乌鲁木齐新华智原互联网科技学校 卓翼科技产业互联网合作 半导体行业属于互联网高科技类吗 工业互联网科技创业 互联网科技手机排行榜
0