高阶JAVA篇-深入了解字符集

这篇具有很好参考价值的文章主要介绍了高阶JAVA篇-深入了解字符集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🔥博客主页: 小扳_-CSDN博客
❤感谢大家点赞👍收藏⭐评论✍
 

高阶JAVA篇-深入了解字符集,html,前端 

高阶JAVA篇-深入了解字符集,html,前端

文章目录

       1.0 字符集的说明

        1.1 ASCII  字符集

        1.2 GBK 字符集

        1.3 UTF-8字符集

        2.0 字符集的编码与解码

        2.1 编码提供了常见的方法

        2.2 解码提供了常见的方法


       1.0 字符集的说明

        字符集是一组字符的集合,字符集包括所有可用的字符,包括字母、数字、标点符号、特殊字符和控制字符等。常见的字符集有 ASCII 字符集UTF-8 字符集GBK 字符集等。

        1.1 ASCII  字符集

        它由128个字符组成,包括大写和小写字母、数字、标点符号、特殊字符和控制字符等。ASCII 字符集使用7位二进制数表示每个字符,范围从0到127。

        只用一个字节大小的容量来“装”下这些每一个英文、数字、符号,需要注意的是首位必须为0。

        1.2 GBK 字符集

        GBK 字符集广泛用于中文环境下的计算机系统和软件,包括操作系统、文字处理软件、网页等。GBK 字符集是一种中文字符集,是在  ASCII  字符集基础上或者兼容的前提下,进行扩展的。

        需要重点了解的是,每一个英文和数字、字符都是可以用一个字节大小的容量来“装”下,首位必须为0,对于中文汉字来说,需要每一个字符需要两个字节大小的容量来“装”下这超过21000个汉字和符号,包括繁体字、生僻字和部分其他语种的字符。需要重点注意的是,首位必须为1。

        1.3 UTF-8字符集

        UTF-8 字符集是一种全球通用的字符编码标准,它包含了几乎所有已知的字符,涵盖了世界上所有的语言和符号。UTF-8 字符集的目标是为每个字符提供一个唯一的编码,以便在不同的计算机系统和软件中进行字符的交换和处理。

        UTF-8是一种变长编码方案,使用1到4个字节来表示不同的字符,适用于在互联网上传输和存储文本数据。每个中文的汉字、字符等占三个字节每个英文、数字、符号等占一个字节,在编码或者解码为了区分这些字符不混淆,就会有一定的规则。占一个字节的,首位必须为0占两个字节的,第一个字节首位三个必须为110,第二个字节的首位两个必须为10;占三个字节的,首位四个必须为1110,第二个字节首位两个为10,第三个字节首位两个也为10;占四个字节的,首位五个必须为11110,第二个字节首位两个为10,第三个字节首位两个也为10,第四个字节首位两个也为10。

        小结一下:

高阶JAVA篇-深入了解字符集,html,前端

        2.0 字符集的编码与解码

        字符集的编码和解码是将字符转换为对应的编码值,或将编码值转换为对应的字符的过程。简单地来说,编码就是将字符转变为编号,这里的编号就是字符集中对应的编码值,而解码就是逆过程,将编号转变为字符

        2.1 编码提供了常见的方法

        使用 getBytes() :默认系统提供的编码集。

        使用 getBytes( String  charsetName) :选择自己想要的编码集。

代码如下:

import java.util.Arrays;

public class characterSet {
    public static void main(String[] args) throws Exception{
        //编码
        String name = new String("a我b");
        //默认系统的提供的字符集进行编码
        byte[] num = name.getBytes();
        System.out.println(Arrays.toString(num));

        //自选的字符集进行编码
        byte[] num1 = name.getBytes("GBK");
        System.out.println(Arrays.toString(num1));
    }
}

运行结果如下:

高阶JAVA篇-深入了解字符集,html,前端

        2.2 解码提供了常见的方法

        就是用字符串类的构造器,将字节数组放到有参构造器中,就可以得到了相应的字符串了。

        使用:String pass = new String( byte bytes[]),默认系统提供的编码集。

        使用:String pass = new String( byte bytes[], String charsetName),自选编码集。

代码如下:

import java.util.Arrays;

public class characterSet {
    public static void main(String[] args) throws Exception{
        //编码
        String name = new String("a我b");
        //默认系统的提供的字符集进行编码
        byte[] num = name.getBytes();
        System.out.println(Arrays.toString(num));

        //自选的字符集进行编码
        byte[] num1 = name.getBytes("GBK");
        System.out.println(Arrays.toString(num1));

        //解码
        //用系统提供的默认字符集
        String pass = new String(num);
        System.out.println(pass);
        //自己选用想要的字符集
        String pass1 = new String(num1,"GBk");
        System.out.println(pass1);
    }
}

运行结果如下:

高阶JAVA篇-深入了解字符集,html,前端

        需要重点注意的是,使用了某一套字符集进行编码,那么必须要使用跟编码使用的相同的一套字符集进行解码

代码如下:

import java.io.UnsupportedEncodingException;

public class characterSet {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String name = "李四";
        //这里使用了 UTF-8 这一套字符集进行编码
        byte[] passName = name.getBytes();
        //如果使用 GBK 这一套字符集进行解码的时候会很很大问题
        String newName = new String(passName,"GBK");
        System.out.println(newName);
    }
}

运行结果:

高阶JAVA篇-深入了解字符集,html,前端

        这里就出现了我不认识的字了,总之,编码与解码都要使用同一套字符集,不然会出现问题。 

高阶JAVA篇-深入了解字符集,html,前端文章来源地址https://www.toymoban.com/news/detail-736600.html

到了这里,关于高阶JAVA篇-深入了解字符集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为OD机试之全量和已占用字符集(Java源码)

    题目描述 给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。 输入描述 输入一个字符串 一定包含@,@前为全量字符集 @后的为已占用字符集 已占用字符集中的字符一定是全量字符集中的字符 字符集中的字符跟字符之间使用英文

    2024年02月07日
    浏览(39)
  • 【华为OD机试】全量和已占用字符集(python, java, c++, js)

    前言 :本专栏将持续更新华为OD机试题目,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于OD机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:nansun0903@163.com;备注:CSDN。 给定两个字符集合,一个为全

    2024年02月11日
    浏览(32)
  • 【华为OD机考 统一考试机试C卷】 全量和已占用字符集 、字符串统计(C++ Java JavaScript Python)

    2023年11月份,华为官方已经将 华为OD机考:OD统一考试(A卷 / B卷)切换到 OD统一考试(C卷)和 OD统一考试(D卷) 。根据考友反馈:目前抽到的试卷为B卷或C卷/D卷,其中C卷居多 ,按照之前的经验C卷部分考题会复用A卷,B卷题,博主正积极从考过的同学收集C卷和D卷真题。

    2024年02月05日
    浏览(32)
  • MySQL 字符集概念与原理及如何配置字符集 - 超详细图文详解

    目录 一、字符集概念 1、字符(Character) 2、字符编码 3、字符集(Character set) 二、字符集原理 1、ASCII字符集 2、GB2312 3、GBK 4、GB18030 5、BIG5 6、Unicode 编码 三、字符序 四、MySQL字符集 字符序 1、mysql 字符集 2、mysql 字符序 3、字符集与字符序的关系 五、MySQL 数据存储字符集

    2024年02月04日
    浏览(41)
  • (二)java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

    不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK (一)SQL state [99999]; error code [17056]; 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK; nested exception (二)java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK java.sql.SQLException: 不支持的字符集 (在类路

    2024年02月09日
    浏览(27)
  • 算法加密与解密、字符编码与字符集

    加密保证数据不会被窃取或者修改 哈希算法 压缩映射 :散列又称为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。 哈希算法(Hash)又称摘要算法(Digest),哈希算法的目的就是为了验证原始数据是否被篡改。 主流的散列算法有MD5和

    2024年02月03日
    浏览(40)
  • 有限字符集的字符串压缩算法

    在开发中,经常有上报线上堆栈来分析处理线上问题的场景,所以,对堆栈的压缩和加密也是必不可少的。加密:可以使用AES对称加密算法,压缩:可以在上传时利用protobuf天生的压缩性对字符串进行压缩。 不过,出于对流量的节省和传输效率的提升,可以通过在堆栈上传前

    2024年02月11日
    浏览(46)
  • oracle 字符集

      NLS_NCHAR_CHARACTERSET  国家字符集 NLS_CHARACTERSET  字符集 -----字符集和国家字符集的区别 字符集用来存储CHAR,VARCHAR2,CLOB,LONG等类型数据。 国家字符集用以存储NCHAR,NVARCHAR2,NCLOB等类型数据。

    2024年01月24日
    浏览(33)
  • (三) MySQL字符集

    MySQL字符集包括 基字符集 (CHARACTER)与 校对规则 (COLLATION)这两个概念: latin1支持西欧字符、希腊字符等 gbk支持中文简体字符 big5支持中文繁体字符 utf8几乎支持世界所有国家的字符 utf8mb4是真正意义上的utf-8 查看当前数据库默认的字符集: SHOW VARIABLES like \\\'character%\\\'; MySQL在

    2024年01月24日
    浏览(48)
  • 字符集详解

    计算机底层不可以直接存储字符的。 计算机中底层只能存储二进制(0、1) 。 二进制是可以转换成十进制的。 结论:计算机底层可以表示成十进制编号。计算机可以给人类字符进行编号存储,这套编号规则就是字符集。 ASCII(American Standard Code for Information Interchange,美国信息交

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包