java输出GB2312、GBK、GB18030、UTF-8所有的字符

相关文章

  • 【转】彻底搞明白 GB2312、GBK 、GB18030和UTF-8

1.ASICII、GB2312、GBK、GB18030 以及 UTF8 的关系

在这里插入图片描述

2.编写代码

  • 引入依赖:hutool工具类
        <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version></dependency>
  • 编写java代码
package top.lishuoboy.test;import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.StrBuilder;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.*;import java.nio.ByteOrder;
import java.nio.charset.Charset;public class CharsetPrintTest {private static final String SPACE = "  ";private static final String BASE_DIR = "D:/111/charset/";private static final Charset GB2312 = Charset.forName("GB2312");private static final Charset GBK = CharsetUtil.CHARSET_GBK;private static final Charset GB18030 = Charset.forName("GB18030");private static final Charset UTF_8 = CharsetUtil.CHARSET_UTF_8;public static void main(String[] args) {FileUtil.del(BASE_DIR);printAllChar(GB2312);printAllChar(GBK);printAllChar(GB18030);printAllChar(UTF_8);}/** 输出指定编码的所有字符 */public static void printAllChar(Charset charset) {StrBuilder sb = new StrBuilder();for (int i = 1; i < (1 << 16); i++) {                       // 默认只输出前2个字节,否则太大byte[] bytes = ByteUtil.intToBytes(i, ByteOrder.BIG_ENDIAN);byte[] bytesNew = remove0(bytes);// 不同编码输出字节不一致if (GB2312.equals(charset) || GBK.equals(charset)) {    // GB2312、GBK占1、2个字节if (i > (1 << 16)) continue;} else if (GB18030.equals(charset)) {                   // GB18030占1、2、4个字节if (i > (1 << 16) && i < (1 << 24)) continue;} else if (UTF_8.equals(charset)) {                     // UTF_8占1、2、3、4个字节if (i > (1 << 24)) continue;} else {System.err.println("不支持的字符编码");break;}// 每16个换行if (i % 16 == 1) {sb.append(StrPool.CRLF + Convert.toHex(bytes) + SPACE);}String str = new String(bytesNew, charset);str = replace(str, i);sb.append(str + SPACE);}FileUtil.appendString(sb.toString(), BASE_DIR + charset + ".log", charset);}/** 将字节数组中前面的0干掉(知道第一个不是0的结束) */private static byte[] remove0(byte[] bytes) {for (int i = 0; i < bytes.length; i++) {if (bytes[i] != 0) {byte[] bytesNew = new byte[bytes.length - i];ArrayUtil.copy(bytes, i, bytesNew, 0, bytes.length - i);return bytesNew;}}return bytes;}/** 【BCompare比对专用】替换莫名其妙的字符,方便BCompare对比,可以不用 */private static String replace(String str, int i) {String charStr = RandomUtil.BASE_CHAR_NUMBER + RandomUtil.BASE_CHAR.toUpperCase() + ":;=<>?�\u007F";if (i > (1 << 7 - 1)) {str = StrUtil.replaceChars(str, charStr, "");}return str;}
}

3.对比

3.1. GB2312与GBK

  • 1在这里插入图片描述
  • 2
    在这里插入图片描述

3.2. GBK与GB18030(只比对前2个字节)

  • 1
    在这里插入图片描述

  • 2
    在这里插入图片描述

  • 3
    在这里插入图片描述

  • 1
    在这里插入图片描述

  • 2
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻松批量自定义重命名,为文件夹加上个性化编号!

在日常生活和工作中&#xff0c;我们经常需要对大量的文件夹进行重命名&#xff0c;以更好地管理和整理文件。然而&#xff0c;手动逐个修改文件夹名称费时费力&#xff0c;效率低下。现在&#xff0c;我们为您推荐一款简单易用的工具&#xff0c;可以帮助您快速批量自定义重命…

LoRaWAN网关与网络服务器(NS)的通信CUPS 协议介绍

LoRa Basics™ Station 定期查询 CUPS 服务器以获取更新。该协议是 HTTP/REST,使用Credentials中描述的客户端/服务器身份验证方法。对于每个查询,工作站都会提供有关其当前状态的信息,并接收包含其 LNS 和 CUPS 凭证更新的二进制 blob,以及具有任意更新的通用数据段。 通…

网络安全的相关知识点

网络安全威胁类型&#xff1a; 1.窃听&#xff1a;广播式网络系统。 2.假冒 3.重放&#xff1a;重复一份报文或者报文的一部分&#xff0c;以便产生一个被授权的效果。 4.流量分析 5.数据完整性破坏 6.拒绝服务 7.资源的非授权使用 8.陷门和特洛伊木马&#xff1a;木马病毒有客…

Java课题笔记~ Spring 的事务管理

一、Spring 的事务管理 事务原本是数据库中的概念&#xff0c;在 Dao 层。但一般情况下&#xff0c;需要将事务提升到业务层&#xff0c;即 Service 层。这样做是为了能够使用事务的特性来管理具体的业务。 在 Spring 中通常可以通过以下两种方式来实现对事务的管理&#xff…

Vue3大屏幕动态滚动

Vue3 大屏数字滚动效果 随着大屏幕技术的发展&#xff0c;大屏数字滚动效果在各种应用场景中越来越常见&#xff0c;例如数字展示、统计数据展示等。Vue3 作为一种流行的前端开发框架&#xff0c;提供了强大的工具和便捷的开发方式&#xff0c;非常适合实现大屏数字滚动效果。…

花样滑冰选手骨骼点动作识别

2023 CCF BDCI 基于飞桨实现花样滑冰选手骨骼点动作识别 16名方案以及总结 比赛任务 花样滑冰与其他运动项目相比&#xff0c;其动作类型的区分难度更大&#xff0c;这对识别任务来说是极大的挑战。对于花样滑冰动作识别任务&#xff0c;主要难点如下&#xff1a; (1) 花样滑…

Python-OpenCV中的图像处理-图像梯度

Python-OpenCV中的图像处理-图像梯度 图像梯度Sobel 算子和 Scharr 算子Laplacian 算子 图像梯度 图像梯度&#xff0c;图像边界等使用到的函数有&#xff1a; cv2.Sobel()&#xff0c; cv2.Scharr()&#xff0c; cv2.Laplacian() 等原理&#xff1a;梯度简单来说就是求导。Op…

fastadmin、vue、react图标库适用于多种框架

在二开fastadmin中&#xff0c;在写vue以及react时&#xff0c;侧边导航栏以及按钮中常常需要很多图标&#xff0c;那么这些图标应该去哪里得到呢&#xff0c;在这里给大家一个链接&#xff0c;这里有丰富的图标库&#xff0c;可以找到自己想要的进行使用。 点击下方链接&…

gstreamer-pipeline用法汇总

生成mp4 生成2s包含video和audio的mp4 gst-launch-1.0 -e --gst-debug2 \ \ videotestsrc num-buffers60 ! video/x-raw,framerate30/1 ! \ openh264enc ! h264parse ! muxer.video_0 \ \ audiotestsrc num-buffers90 ! audio/x-raw,channels1 ! \ fdkaacenc ! aacparse ! mu…

github pages 用法详解 发布自己的网站

github pages 基础用法 URL 规则 假设你的 github 帐号为 mygithub&#xff0c;需要发布的仓库名为 myrepo&#xff0c;那么 pages 的 URL 为&#xff1a; https://mygithub.github.io/myrepo 添加内容 用任意编辑器写好&#xff08;或者生成&#xff09;标准的网页内容&a…

数据挖掘的基本概念和大数据的特点

数据挖掘是指从大量数据中提取有价值的信息或模式的过程。它通常使用计算机技术来分析数据&#xff0c;并利用统计学、机器学习、人工智能等方法来发现数据中的隐藏规律、趋势和关联性。 数据挖掘的基本概念包括以下几个方面&#xff1a; 数据预处理&#xff1a;对原始数据进行…

苹果正在测试新款Mac mini:搭载M3芯片 配备24GB大内存

据悉苹果目前正在测试新的Mac机型&#xff0c;亮点是采用最新的M3芯片。 据报道&#xff0c;首款搭载M3芯片的设备应该是13英寸的MacBook Pro和重新设计的MacBook Air&#xff0c;Mac mini机型并不在名单上。 M3和M2同样拥有最多8个核心&#xff0c;分别为4个性能核和4个能效核…

OpenAI-Translator 实战总结

最近在极客时间学习《AI 大模型应用开发实战营》&#xff0c;自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator&#xff0c;在这里简单记录下开发过程和心得体会&#xff0c;供有兴趣的同学参考 功能概览 通过openai的chat API&#xff0c;实现一个pdf翻译器实现一个…

设计模式十三:代理(Proxy Pattern)

代理模式是一种结构型设计模式&#xff0c;它允许通过在对象和其真实服务之间添加一个代理对象来控制对该对象的访问。代理对象充当了客户端和真实服务对象之间的中介&#xff0c;并提供了额外的功能&#xff0c;如远程访问、延迟加载、访问控制等。 代理模式的使用场景包括&a…

Python爬虫——selenium的安装和基本使用

1.什么是selenium&#xff1f; selenium是一个用于web应用程序测试的工具selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样支持通过各种driver&#xff08;FrifoxDriver&#xff0c;ItenrentExploreDriver&#xff0c;OperaDriver&#xff0c;ChromeDrive…

【BASH】回顾与知识点梳理(十四)

【BASH】回顾与知识点梳理 十四 十四. 文件与目录的默认权限与隐藏权限14.1 文件预设权限&#xff1a;umaskumask 的利用与重要性&#xff1a;专题制作 14.2 文件隐藏属性chattr (配置文件案隐藏属性)lsattr (显示文件隐藏属性) 14.3 文件特殊权限&#xff1a; SUID, SGID, SBI…

了解华为(H3C)网络设备和OSI模型基本概念

目录 一&#xff0c;认识华为 1.华为发展史 2.华为网络设备介绍 3.VRP概述 二&#xff0c;OSI七层模型 1.七层模型详细表格 2.各层的作用 3.数据在各层之间的传递过程 4.OSI四层网络模型 一&#xff0c;认识华为 官网&#xff1a;https://www.huawei.com/cn/ 1.华为发…

从‘深林’到潮鞋App:得物如何改变电商格局”

在App Store上搜索下载得物App&#xff0c;惊奇发现其下载量达到百万级别&#xff0c;媲美同期京东App的下载量。 这是一个不小的数据体量&#xff0c;对此我产生了极大的好奇&#xff1a;“在淘宝系、京东、唯品会等电商巨头林立的现状下&#xff0c;单依靠潮鞋的得物凭什么能…

详解配置交换机多生成树MSTP+VRRP 的典型组网

详解配置交换机多生成树MSTPVRRP 的典型组网 组网&#xff1a; 1. 这是一个由三台交换机组成的倒三角型二层交换网络&#xff1b;网络中有4个VLAN&#xff1a;10、20、30、40&#xff1b;接口编号如图所示&#xff1b;SW3为接入层交换机&#xff0c;SW1、SW2为汇聚层交换机&am…

bash: make: command not found

make之后报错信息如下&#xff1a;cd 对应的文件路径后 make 发现报错&#xff1a;bash: make: command not found 这个原因可能是没有安装make工具,也可能是安装了make之后,没有将make的文件路径添加到系统环境变量中 有没有安装make,可以使用Search Everything搜索是否有make…