Java中字符与字节流的转化

本文探讨了Java中字符与字节流的转化,详细解释了为什么要进行编码,介绍了ASCII、ISO-8859-1、GB2312、GBK、UTF-16和UTF-8等编码格式。在I/O操作和内存操作中,编码转换的注意事项和常见问题也得到了阐述。最后,对比了几种编码格式的优缺点,推荐了在不同场景下选择的合适编码方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几种常见的编码格式

为什么要编码

不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?
要回答这个问题,必须要回答计算机是如何表示我们人类能够理解的符合的,这些符号也就是我们人类使用的语言。由于人类的语言太多,表示这些语言的符号太多,无法用计算机中的一个基本的存储单元——字节来表示。因而必须要经过拆分或一些翻译工作,才能让计算机理解我们的语言。我们把计算机能够理解的语言假定为英语,其他语言要能够在计算机上使用,必须得得到一次翻译,把它翻译成英语。这个翻译的过程就是编码。所以可以想象,只要不是说英语的国家,要使用计算机就必须经过编码。这看起来有些霸道,但这就是现状。这也是我国现在在大力推广使用汉语一样,希望其他国家都会说汉语,以后其他语言都被翻译成汉语,我们可以把在计算机中存储的最小单位改成汉语,这样就不存在编码问题了。
所以总结起来说,编码的原因可以总结为下面几条:

  • 在计算机中存储信息的最小单元是 1个 字节,即8个bit,所以能表示的字符范围是0~255.
  • 人类要表示的符号太多,无法用1个字节完全表示。
    要解决这个矛盾必须要有一个新的数据结构char,而从char到byte必须编码。

如何“翻译”

计算机提供了很多翻译方式

  • ASCII
  • ISO-8859-1
  • GB2312
  • GBK
  • UTF-8
  • UTF-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Think_Higher

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值