首页 > 编程语言 >Java进阶学习笔记63——字符集

Java进阶学习笔记63——字符集

时间:2024-10-31 21:18:49浏览次数:7  
标签:编码 Java 字节 解码 字符集 GBK 63 ASCII 进阶

常见字符集介绍:

美国人:

英文字母(大小写)数字、标点符号、特殊字符。

标准字符集:

ASCII码:

标准ASCII字符集:

ASCII:美国信息交换标准代码,包括了英文、符号等。

标准ASCII使用1个字节存储一个字符,首位是0,总共表示128个字符,对美国人老说完全够用。

中国人自己的字符集:

GBK(汉字内码扩展规范, 国标)

汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。

注意:GBK兼容了ASCII字符集。

各个国家如果有各个国家的编码:

Unicode字符集(统一码,也叫万国码)。

Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。

UTF-32: 用4个字节表示一个字符。有容乃大。

这种方案太过于奢侈。占用存储空间,通信效率变低。

UTF-8: 

是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节、2个字节、3个字节、4个字节。

英文字符、数字等只占一个字节(兼容标准ASCII编码),汉字字符占用3个字节。

注意:技术人员在开发时都应该使用UTF-8进行编码。

在IDE中,就是使用的UTF-8进行编码。

注意:

字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。

英文和数字一般不会乱码,因为很多字符集都兼容了ASCII编码。

字符集的编码和解码操作:

编码:把字符按照指定字符集编码成字节;

解码:把字节按照指定字符集解码成字符。

package cn.chang.d3_charset;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class CharsetTest1 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        // 1. 编码
        String Data = "a我b";
        byte[] bytes = Data.getBytes();  // 默认是按照平台字符集(UTF-8)进行编码的。
        System.out.println(Arrays.toString(bytes));  // [97, -26, -120, -111, 98]

        // 按照指定字符集进行编码。
        byte[] bytes1 = Data.getBytes("GBK");   // 使用GBK进行编码
        System.out.println(Arrays.toString(bytes1));   // [97, -50, -46, 98]

        // 2. 解码
        String s1 = new String(bytes);   // 按照平台默认编码UTF-8解码
        System.out.println(s1);

        // 3. 解码2
        String s2 = new String(bytes1, "GBK");  // 使用GBK进行解码
        System.out.println(s2);
    }
}

编码使用字符集,解码也就应该使用什么字符集。

标签:编码,Java,字节,解码,字符集,GBK,63,ASCII,进阶
From: https://blog.csdn.net/chang_chunhua/article/details/143398810

相关文章

  • 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现二
    一、前言介绍:1.1项目摘要随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势。传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速、便捷需求。这些问题不仅影响了快递服务的效率,也增加了快递员和消费者的不便。在这样的背景下,快递柜......
  • 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现一
    一、前言介绍:1.1项目摘要随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势。传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速、便捷需求。这些问题不仅影响了快递服务的效率,也增加了快递员和消费者的不便。在这样的背景下,快递柜......
  • 华为OD机试-(E卷,100分) - 补种未成活胡杨(Java & Python& JS & C++ & C )
    最新华为OD机试题目描述近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?输入描述N总种植数量,1<=N<=100000M未成活胡杨数量,M个空格......
  • 【java】什么是 Future 和 CompletableFuture - 一篇文章快速入门 Java 异步编程
    1.引言在现代Java编程中,异步编程变得越来越重要。随着多核处理器的普及,充分利用多线程可以大大提高程序性能和用户体验。在这种情况下,Future和CompletableFuture成为处理异步任务的核心工具。2.Future是什么?Future的定义及基本概念Future是Java并发库中的接口......
  • Java 多线程中的通信机制
    本篇文章讲述了“Java多线程的通信机制”,阅读时长大约为:10分钟一、引言“Java多线程中的等待与通知机制”是一种线程间通信方式,用来协调线程的执行顺序和资源共享。通过这样子的机制,线程可以避免忙等待,提高资源利用率和程序执行效率。二、Java多线程中的通信机制概......
  • JAVA面向对象编程(详细 全部)
    概念面向对象编程(Object-orientedProgramming,OOP)是一种广泛应用于软件开发的编程范式。它通过将数据和对数据操作的方法封装在一个独立的实体中,即对象,来组织和管理代码。面向对象编程强调在编程过程中模拟真实世界中的实体和其相互关系。定义类我们需要搞清楚几件事情:对象......
  • (开题报告)django+vuejavaweb学生宿舍管理系统论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于学生宿舍管理系统的研究,现有研究多集中于传统管理模式或单一功能模块的实现。在国内外,传统的学生宿舍管理方式主要依赖人工操作,效......
  • JavaScript:六.函数
    函数用于封装一段完成特定功能的代码,相当于将包含一条或多条语句的代码块“包裹”起来,用户在使用时只需关心参数和返回值,就能完成特定的功能。函数的优势在于提高代码的复用性,降低程序维护的难度。 6.1函数的定义与调用自定义函数的语法格式如下。function函数名([参......
  • Java的异常处理
    异常处理异常的简单了解什么是异常?指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。异常的抛出机制Java中把不同的异常用不同的类表示,一旦发生某种异常,就‘创建该异常类型的对象’,并且抛出(throw)。然后程序员如果没有捕捉(catch)这个异常对象,那么......
  • java+vue计算机毕设高校党建管理平台设计与现实-以西藏民族大学为例【开题+程序+论文+
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,高校党建工作面临着新的机遇与挑战。特别是在西藏民族大学这样的特殊地域环境中,如何有效管理和推进党建工作,成为了一个亟待解......