当前位置: 首页 > news >正文

utf-8转换到utf-16的转换过程你懂吗?

人生自是有情痴,此恨不关风与月。——唐代元稹《离思》

从UTF-8编码的文件中读取文本并将其存储到Java的String对象中,涉及到从字节序列到Unicode码点,再到UTF-16编码的转换。以下是详细的步骤:

  1. 从文件读取字节序列:首先,使用UTF-8字符流(如InputStreamReader)从文件中读取字节序列。

  2. 将字节序列转换为Unicode码点:接下来,字符流将UTF-8编码的字节序列解码为Unicode码点。UTF-8编码使用变长编码,每个字符可以占用1到4个字节。解码过程会将字节序列正确地映射到相应的Unicode码点。

  3. 将Unicode码点转换为UTF-16编码:由于Java的String对象使用UTF-16编码存储字符,因此需要将Unicode码点转换为UTF-16编码。对于基本多文种平面(BMP)中的字符,UTF-16编码与码点相同。对于辅助平面中的字符,需要将码点转换为代理对(surrogate pair)。

  4. 将UTF-16编码的字符存储到String对象中:最后,将转换为UTF-16编码的字符存储在Java的String对象中。此时,可以在程序中对这些字符进行处理和操作。

总结一下,从UTF-8编码的文件读取文本并将其存储到Java的String对象中,需要经历从字节序列到Unicode码点,再到UTF-16编码的转换过程。实际操作中,Java提供了一系列用于字符编码转换的类和方法,例如InputStreamReaderCharset等,这些工具可以帮助您轻松地在不同字符编码之间进行转换。

从gbk编码的文件中读取文本并将其存储到Java的String对象中也是像这样转换的吗?

从GBK编码的文件中读取文本并将其存储到Java的String对象中的过程与从UTF-8编码的文件中读取类似。下面是详细的步骤:

  1. 从文件读取字节序列:首先,使用GBK字符流(如InputStreamReader并指定GBK编码)从文件中读取字节序列。

  2. 将字节序列转换为Unicode码点:接下来,字符流将GBK编码的字节序列解码为Unicode码点。GBK编码使用变长编码,每个字符可以占用1到2个字节。解码过程会将字节序列正确地映射到相应的Unicode码点。

  3. 将Unicode码点转换为UTF-16编码:由于Java的String对象使用UTF-16编码存储字符,因此需要将Unicode码点转换为UTF-16编码。对于基本多文种平面(BMP)中的字符,UTF-16编码与码点相同。对于辅助平面中的字符,需要将码点转换为代理对(surrogate pair)。

  4. 将UTF-16编码的字符存储到String对象中:最后,将转换为UTF-16编码的字符存储在Java的String对象中。此时,可以在程序中对这些字符进行处理和操作。

总结一下,从GBK编码的文件读取文本并将其存储到Java的String对象中,需要经历从字节序列到Unicode码点,再到UTF-16编码的转换过程。实际操作中,Java提供了一系列用于字符编码转换的类和方法,例如InputStreamReaderCharset等,这些工具可以帮助您轻松地在不同字符编码之间进行转换。

例如,下面是一个简单的示例,演示了如何从GBK编码的文件中读取文本并将其存储到Java的String对象中:


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;public class GbkFileReader {public static void main(String[] args) {try {FileInputStream fis = new FileInputStream("path/to/gbk_file.txt");InputStreamReader isr = new InputStreamReader(fis, Charset.forName("GBK"));BufferedReader br = new BufferedReader(isr);String line;while ((line = br.readLine()) != null) {System.out.println(line);}br.close();} catch (Exception e) {e.printStackTrace();}}
}

上述代码首先创建一个GBK编码的InputStreamReader,然后使用BufferedReader逐行读取文件内容,并将读取到的内容存储到Java的String对象中。在此过程中,InputStreamReader会自动处理从GBK编码到Unicode码点以及从Unicode码点到UTF-16编码的转换。

当处理不同编码的文本文件时,请确保使用正确的字符编码以避免乱码或数据损坏。如果您不确定文件的编码,可以使用编码检测库(如Python的chardet库)来自动检测文件的编码。

总之,从GBK编码的文件中读取文本并将其存储到Java的String对象中涉及到从字节序列到Unicode码点,再到UTF-16编码的转换。通过使用Java提供的字符编码转换工具,您可以轻松地在不同字符编码之间进行转换,以满足各种开发需求。

相关文章:

utf-8转换到utf-16的转换过程你懂吗?

人生自是有情痴,此恨不关风与月。——唐代元稹《离思》 从UTF-8编码的文件中读取文本并将其存储到Java的String对象中,涉及到从字节序列到Unicode码点,再到UTF-16编码的转换。以下是详细的步骤: 从文件读取字节序列:首…...

C++编程大师之路:从入门到精通--持续更新中~

文章目录前言主要内容C基础入门初识C第一个C程序注释变量常量关键字标识符命名规则数据类型整型sizeof关键字实型(浮点型)字符型转义字符字符串型布尔类型 bool数据的输入运算符算术运算符赋值运算符比较运算符逻辑运算符程序流程结构选择结构if语句三目…...

面试阿里软件测试岗,收到offer后我却毫不犹豫拒绝了....

我大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是2年。我想说的是,但凡有点机会,千万别去外包! 在深思熟虑过后&am…...

【c语言多线程编程】关于pthread_create()和pthread_join()的多线程详解

关于pthread_create()和pthread_join()的多线程详解 一、首先说一下pthread_create() 函数的用法: int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine) (void *),void *arg);各参数的含义: 1、pthread_t *thre…...

抖音seo矩阵系统源码搭建技术+二开开源代码定制部署

抖音已经成为了当今最为流行的短视频平台之一,拥有着庞大的用户群体和海量的视频资源。对于一些商家或者运营者来说,如何从这些视频资源中挖掘出有效的信息,进而提升自己的品牌、产品或者内容的曝光度,就成为了一个非常重要的问题…...

【周赛刷题】平衡树+图中最短环

2612. 最少翻转操作数(平衡树) 题目的难度有一部分在于数学推导。对于某个点 iii 进行反转是有一个范围的,这个范围需要考虑到边界的情况。可以的得到的一个结论是。对于窗口反转,KaTeX parse error: Expected group after ^ at p…...

C++笔记——第十篇 继承 的解析,详细易懂哦

目录 一、继承的概念及定义 1.继承的概念 2. 继承定义 2.1定义格式 2.2继承关系和访问限定符 2.3继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承…...

SQL Server中的全文搜索

SQL Server中的全文搜索一、概述二、全文搜索查询三、将全文搜索查询与 LIKE 谓词进行比较四、全文搜索体系结构4.1、SQL Server 进程4.2、过滤器守护程序主机进程五、全文搜索处理5.1、全文索引过程5.2、全文查询流程六、全文索引体系结构6.1、全文索引结构6.2、全文索引片段6…...

自适应平移混音方法

一、简介: 自适应平移混音方法是一种常见的音频混音技术,它利用自适应滤波器对不同音频信号进行平移和加权,从而实现混音。 二、该方法的基本步骤如下: 采集和存储需要混音的音频信号。 对其中一个音频信号进行预处理&#xff0c…...

炼钢厂VR职业技能实训软件,提高员工学习效率和掌握技能速度

炼钢作业是一个高危、高压、高温的行业,在实际操作中需要严格遵守安全规范和操作规程,一旦出现差错可能造成巨大的经济损失和人员伤亡。 利用广州华锐互动开发的炼钢厂VR职业技能实训软件,可以有效帮助员工更好地理解和掌握炼钢作业中的相关…...

MySQL数据库范式

文章目录MySQL数据库范式1、范式的优缺点2、第一范式3、第二范式4、第三范式5、BC范式6、第四范式MySQL数据库范式 1、范式的优缺点 应用数据库范式的好处: 减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)消除异常&…...

通过多层方法重塑网络安全

多年来,网络安全威胁的复杂性不断增加。此外,随着远程和混合工作场所模式的兴起,网络犯罪分子可以利用的漏洞数量显着增加。由于可能存在的网络威胁的范围如此之广,因此没有一种单一的解决方案可以应对所有威胁。 由于多种原因&a…...

Golang学习+深入(四)-运算符

目录 一、概述 1、算数运算符 2、关系运算符 3、逻辑运算符 4、赋值运算符 5、运算符优先级 6、位运算符 7、其他运算符 二、进制 1、进制转换 1、其他进制转十进制 2、十进制转其他进制 3、二进制转其他进制 4、其他进制转二进制 5、二进制在运算中的说明 三、…...

C++ 运算符重载:C++ 运算符重载的高级技巧和最佳实践

C 运算符重载:深入剖析与实现I. 引言A. 什么是运算符重载B. 为什么要使用运算符重载C. C运算符重载的优缺点II. 运算符重载基本概念A. 运算符重载的定义B. 运算符重载的分类1. 一元运算符2. 二元运算符C. 限制与规范1. 无法重载的运算符2. 重载运算符的规范与建议II…...

软件测试找了2个月了,找不到工作怎么办?

那就问你一些问题,看你能回答多少 1:测试流程是什么?测试用例包含哪些内容?测试用例设计都有哪些?给你一个一次性杯子,你会怎么测试? 2:数据库怎么查看前十行数据?内连接和外连接的区别&#…...

满足高并发的TB API接口接入说明

大家都知道,淘宝的反爬虫机制十分严,而很多时候,没办法高效的拿到数据内容响应终端需求,而依赖爬虫就会造成动不动就出现滑块验证,让人很无解。这里我们分享让采集不再出现任何滑块验证码,完全解密通过&…...

Themis Pro版将正式推出,3次迭代到底在酝酿什么?

最近在社区内讨论火热的Themis Pro,终于要来了!4月2日Themis官网(themis.capital )全新升级改版上线,并宣布Themis Pro 即将于4月下旬正式推出。 Themis Pro 是基于Ve(3,3)模型在FVM公链上搭建的新一代去中…...

边缘检测和轮廓检测

边缘检测 什么是边缘: * 图像中像素值发生剧烈变化的位置(高频信息区域) * 这些区域往往都是图像的边缘 方法:滤波、形态学处理等 边缘的作用 本质上,边缘是不同区域之间的边界。 其中包含了图像的区域信息,形状信息 一方面,可以利用这些信息来作为特征对图像进行理解(甚至…...

二分法模板以及例题 (三)

167. 两数之和 II - 输入有序数组 输入:numbers [2,7,11,15], target 9 输出:[1,2]。 解释:2 与 7 之和等于目标数 9 。因此 index1 1, index2 2 。返回 [1, 2] 解题思路:首先散列表可以直接秒了,双指针也秒了 二分…...

向下转型和向上转型(易理解)

向上转型:父类引用指向子类对象 定义A B C D 四个类,分级继承 对象 a 的编译类型是A,运行类型是B,A是B的父类,父类的引用 a 指向的是B这个子类的对象,因为new的是B这个类,创建的也就是B这个类的…...

华为OD机试用JS实现 -【机智的外卖员】(2023-Q2 押题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:机智的外卖员 题目描述: 外…...

同态加密:一个基于多方计算的CKKS方案

这篇文章主要介绍LattiGo团队搞出来的一个多方同态加密的工作。个人觉得比较优雅,而且有库支持,方便把玩,所以记一下。 在攒毕业论文的时候整了这么个看上去很烂,但是(个人觉得)有一点意思的烂活&#xff0…...

最小生成数

题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 �,�N,M,表示该图共有 �N 个结点和 �M 条无向边。 接下来 …...

【模板】树状数组

目录: 单点修改,区间查询: 题目描述: lowbit()运算: 插入、修改单点数据: 计算前缀和: 完整代码: 区间修改,单点查询: 计算差分数组: 计算每个点的…...

网站都变成灰色了,怎么实现的?

有些时候我们需要把网站页面变成黑白色或灰色,特别是对于一些需要悼念的日子,以及一些影响力很大的伟人逝世或纪念日的时候,都会让网站的全部网页变成灰色(黑白色),以表示我们对逝者或者英雄的缅怀和悼念。…...

NeRF详解

论文标题:《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》 论文地址:https://arxiv.org/abs/2003.08934 推荐代码:https://github.com/yenchenlin/nerf-pytorch 文章目录前言隐式表达NeRF的训练位置编码体渲染&…...

Java之静态代码块和静态类、静态导入

前言 在上一篇文章中给大家讲解了static静态关键字,以及静态变量、静态常量和静态方法等内容。但是关于static,还有其他的一些内容,比如静态类、静态代码块和静态导入等,接下来给大家继续分析讲解。我们一起来看看这些内容都是怎…...

Python3 File isatty() 、os.chflags()方法

Python3 File isatty() 方法Python3 File(文件) 方法概述isatty() 方法检测文件是否连接到一个终端设备,如果是返回 True,否则返回 False。语法isatty() 方法语法如下:fileObject.isatty(); 参数无返回值如果连接到一个终端设备返回 True&…...

【SH_CO_TMT_PACKAGE保留60天数据和增加索引】

1. 保留60天数据 DELETE FROM SH_CO_TMT_PACKAGE WHERE CREATED_ < SYSDATE - 195SH_CO_TMT_PACKAGE 这个表是tmt的数据统计表,数据量极大,大概有1500W 里头的数据都是从TMT机台运行状况表(比如满管率,断丝数,下次落纱时间)同步过来的。 朗通针对这些数据,做了个…...

2022蓝桥杯省赛——数位排序

问题描述 小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。 例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位之和 13 。 又如, 6 排在 …...