Java系列之:字符串UTF-8 编码格式转换位 UTF-32 【生僻字截取问题】

news2024/11/27 19:56:06

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

前言

       在项目开发中遇到这样一个需求,就是要将包含生僻字字符串的首字母屏蔽为 * ;比如:𣓃𬱖㛃依䶮 屏蔽后为 *𬱖㛃依䶮 。如果使用一般的substring()字符串 截取会出现异常异常,有些生僻字是有两个汉字组合而成。切割的时候 会截取一半、导致剩下部分出现意外。

解决方法

       改变字符的编码格式,将UTF-8的编码格式 转换为 UTF-32 的编码格式,这样,每个字符都占用4个字节,截取的时候,按四位字节截取就可以有效解决这个问题。有关UTF-32 编码的介绍如下图

在这里插入图片描述

代码案例

方法说明

  • StringgetBytes()方法是得到一个操作系统默认的编码格式的字节数组。例如: byte[] orignalUTF_32 = TransferString.getBytes("UTF-32"); 将得到UTF-32编码格式的字节数组。

  • 与getBytes相对的,可以通过new String(byte[], decode)的方式来还原字符串。例如: String result = new String(afterUTF_32,"UTF-32"); 可以将这个字节数组 再次还原为原来的字符串。

UTF-8 转换为 UTF-32

  String TransferString = "𣓃𬱖㛃依䶮"; 
  byte[] orignalUTF_32 = TransferString.getBytes("UTF-32");
  System.out.println("UTF-32 字节长度:" + orignalUTF_32.length);

输出如下:UTF-32 字节长度:20 这个时候,每个字符都占用 4个字节。

看一下如果是UTF-8编码 字节的长度是:

 String TransferString = "𣓃𬱖㛃依䶮"; 
 byte[] orignalUTF_8 = TransferString.getBytes("UTF-8");
 System.out.println("UTF-8 字节长度:" + orignalUTF_8.length);

输出如下:UTF-8 字节长度:17 这个时候每个字符 占用字节长度不一致,就不容易处理。

代码实际案例

       中间对字节数组进行截取操作,如果是UTF-32 编码的,四个字节对应一个字符。就可以方便操作。然后将截取后的的字节数组 再次转换为 字符串。

    @org.junit.Test
    public void testdemo02(){
        try {
            String TransferString = "𣓃𬱖㛃依䶮"; 
            //处理隐藏第一个字符
            byte[] orignalUTF_32 = TransferString.getBytes("UTF-32");
            int lastIndex = orignalUTF_32.length;
            byte[] afterUTF_32 = Arrays.copyOfRange(orignalUTF_32,4,lastIndex);//截取
            String result = new String(afterUTF_32,"UTF-32");
            String TransferStringSub = "*"+result;
            System.out.println(TransferStringSub);

        }catch (Exception e){

        }
    }

查看几个实际转换的例子:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

看农村供水信息化管理系统如何破解供水难题

你是否曾经想过,能够通过一款数字孪生系统平台,解决农村供水的难题?现在,我们带来了这样一款产品,它将为农村供水带来革命性的改变。 我们的农村供水信息化系统,是一款基于数字孪生技术的供水管理平台。它通…

卫星遥感·格物致知丨卫星遥感的力量——自然灾害监测的太空之眼—洪涝灾害监测

遥感卫星从太空感知地球和获取地球表面的信息,当前有上千颗遥感卫星每天不停的对地表成像,其数据广泛用于地球系统科学研究、资源环境管理、国土安全和自然灾害监测等领域。卫星遥感的优势有监测范围大、不受区域地形限制、重复观测和多种类型数据(感知多…

Unity Mirror学习(二) Command特性使用

Command(命令)特性 1,修饰方法的,当在客户端调用此方法,它将在服务端运行(我的理解:客户端命令服务端做某事;或者说:客户端向服务端发消息,消息方法&#xff…

创新无处不在的便利体验——基于智能视频和语音技术的安防监控系统EasyCVR

随着科技的迅猛发展,基于智能视频和语音技术的EasyCVR智能安防监控系统正以惊人的速度改变我们的生活。EasyCVR通过结合先进的视频分析、人工智能和大数据技术,为用户提供了更加智能、便利的安全保护体验,大大提升了安全性和便利性。本文将介…

Geotrust的企业型通配符SSL证书申请

Geotrust作为世界知名的CA认证机构之一,颁发了各种SSL证书,其签发的数字证书被广泛应用于电子商务、企业间通信、网络安全等领域,SSL数字证书可以验证网络中用户的身份,确保数据的机密性和完整性。今天随SSL盾小编了解如何申请Geo…

OpenAI开发者大会大模型圈开卷AI Agent? 实在智能布局前瞻已下“先手棋”

“平地起惊雷,至今有余音。” 去年的11月,OpenAI发布ChatGPT给科技圈劈下了一道惊雷,引爆了全世界的AI大模型热潮,全球科技巨头公司争先恐后地推出通用大模型,探索产业应用的可能。 短短一年后,北京时间1…

ECharts中rich的使用

ECharts官方rich介绍 label: {// 在文本中,可以对部分文本采用 rich 中定义样式。// 这里需要在文本中使用标记符号:// {styleName|text content text content} 标记样式名。// 注意,换行仍是使用 \n。formatter: [{a|这段文本采用样式a},{b…

Vuex模块概念

一、核心概念 - module 1.目标 掌握核心概念 module 模块的创建 2.问题 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。 这句话的意思是,如果把所有的状态都放在s…

别再跟我说你不理解 @Transactional 为什么会失效了!省流版解读

别再跟我说你不理解 Transactional 原理了!省流版解读 前言user 表初始数据隔离级别:NESTED 案例一隔离级别:NESTED 案例一省流版答案解读隔离级别:NESTED 案例一省流版答案源码入口隔离级别 Propagation.NESTED 省流版源码剖析隔…

Fiddler Everywhere for Mac:一款强大且实用的网络调试工具

Fiddler Everywhere是一款备受Mac用户喜爱的网络调试工具,它具有强大的功能和易用性。作为一款老牌抓包工具,Fiddler Everywhere在Mac平台上拥有广泛的应用场景,无论是Web开发、移动应用开发还是网络调试,它都能提供全面的解决方案…

[论文阅读] CLRerNet: Improving Confidence of Lane Detection with LaneIoU

Abstract 车道标记检测是自动驾驶和驾驶辅助系统的重要组成部分。采用基于行的车道表示的现代深度车道检测方法在车道检测基准测试中表现出色。通过初步的Oracle实验,我们首先拆分了车道表示组件,以确定我们方法的方向。我们的研究表明,现有…

单链表(增删改查)【超详细】

目录 单链表 1.单链表的存储定义 2.结点的创建 3.链表尾插入结点 4.单链表尾删结点 5.单链表头插入结点 6.单链表头删结点 7.查找元素,返回结点 8.在pos结点前插入一个结点 ​编辑 9.在pos结点后插入一个结点 10.删除结点 11.删除pos后面的结点 12.修改…

XOR Construction

思路: 通过题目可以得出结论 b1^b2a1 b2^b3a2 ....... bn-1^bnan-1 所以就可以得出 (b1^b2)^(b2^b3)a1^a2 b1^b3a1^a2 有因为当确定一个数的时候就可以通过异或得到其他所有的数,且题目所求的是一个n-1的全排列 那么求出a的前缀异或和arr之后…

微软surface laptop禁用触摸屏(win10、设备管理器)

参考链接: 在屏幕中启用和禁用触摸屏Windows 设置如下

asp.net校园招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 校园招聘管理系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发 应用技术:asp.net c#s…

黄执中老师人际说服课思考总结(个人笔记整理 ②)

前言: 沟通和说服的区别:为什么沟通不能解决问题,处于劣势的一方(承受问题的那方)才想去沟通(对方没有沟通动力)。说服是温柔而有力的学科 - 劣势一方的武器。 说服是一门影响人的学问&#xff…

谷歌浏览器安装 vue-devtools 拓展,仅需3分钟,提供插件

1、vue-devtools 扩展 存储在百度网盘地址: 链接:https://pan.baidu.com/s/1LDIJxG26tOHtUe_aUh_pEA 提取码:v81r 下载下来后是一个.crx 文件 2、浏览器打开扩展程序 1、可以通过地址访问 chrome://extensions/ 2、可以自行找到相应位置…

探索双十一:从技术角度剖析电商狂欢节

每年的11月11日,全球最大的在线购物狂欢节“双十一”在中国掀起了一场规模空前的消费风暴。以阿里巴巴为代表的电商平台和众多品牌商家,不仅为消费者提供了数以亿计的优惠商品,同时也将这一活动打造成了一个科技与商业完美结合的标志事件。本…

ogg怎么转mp3格式?三个方法值得一试!

Ogg格式的缺点很多,比如其播放兼容性差、普及性差、无优势、对多声道系统的限制、专业音频制作软件不支持,但是保不齐我们有时候就有一个音频是ogg格式,那么如何把他转换成兼容性更高的MP3格式呢?下面介绍了三种常用的方法。 方法一&#xf…