主题:java编码解惑

Java编码方式:Base64 编码与解码 Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。它主要用于在不支持二进制数据的场合(如电子邮件、URL、文件系统名等)传输二进制数据。严格来说Base64 并不是一种加密/解密算法,而是一种编码方式。Base64 不生成密钥,通过Base64 编码后的密文就可以直接“翻译”为明文。 阅读详情

上篇关于java编码问题的总结发布之后,回头到家自己一想,只是按照自己的思路去记录了一下个人编码问题当中遇到的问题,分析还不够详细。今日提笔如下,希望大家给予点评.

1.先解释几个重要的概念:

<1>.字符集:一个字符的集合,仅仅如此,它只包含某某某些字符,没有别的意义。

<2>.编码字符集:即我们通常意义上要表示的 字符集,它将字符与一个数字一一对应(计算机只认数字)。例如 个人自定义编码字符集 whd 如下:

工:0X1001

人:0X1002

是:0X1003

好:0X1004

样:0X1005

的:0X1006

<3>.编码方式:即我们经常说的gbk gb2312 utf-8等等这样的所谓的编码。其实编码是一个动作,包含了编码字符集和编码方式,二者结合即构成“编码”。而并不是我们通常意义上理解的名词。

例如UTF-8编码这里我做一个个人理解的解释:使用单字节或双字节或三字节 三种方式(按情况需要所定)对unicode字符集进行转换的一种可变长编码。

 

2.或许大家对上面的解释还有些不明白。不着急下面一一详细分析。如果一个字符集有256个字符,那么在单字节的内存管理系统当中,每个字符用一个字节存储,足够。也就是说一个字符对应一个8位的二进制值(这个值我们称为码点)。但是如果字符集比较大,8位的单字节存储系统每个字节不足以唯一标识一个字符。这样就需要多个字节存储一个字符。

这样的情况下,例如65536个字符,最后一个字符就需要16位二进制位标识。那么第一个字符肯定不需要这么多内存位单元来标识。这样如果采用定长双字节的编码方式(例如GBK)就会造成大量的内存空间的浪费。在java平台,虚拟机的内存是有限的。java平台采用的unicode字符集更要尽可能的节省虚拟机内存空间,所以java平台采用Utf-8的编码方式。采用可变长字节编码。对生僻字采用单字节,对经常使用的采用双字节或最多3字节编码。

如下是从网上找到的unicode 与utf-8的转换规则:

0000 - 007F :0xxxxxxx (单字节)

0080 - 07FF :110xxxxx 10xxxxxx (双字节)

0800 - FFFF :1110xxxx 10xxxxxx 10xxxxxx (三字节)
对于unicode码点在0000-007F之间的采用 第一种(单字节)编码方式,对于在0080-07ff之间的unicode值采用第二种(双字节)编码方式,例如汉字的unicode 值是从4E00-9FC3(百度文库至2008年止的数据),基本都在0800-FFFF这个三字节模板范围内,所以使用UTF-8编码方案的话都是存储的3个字节。例如汉字“五”unicode值为4E94,转换为2进制比特流为:0100 1110 10 01 0100 将此比特流变换组合方式 按照 UTF-8的三字节模板填充到里面取代三字节模板里面的X,即构成了11100100 10111010 10010100 即 最后得到的UTF-8编码值为11100100 10111010 10010100 即E4 BA 94。

用程序验证一下:

String s="五";
byte b[]=s.getBytes("utf-8");
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}

依次打印出来:-28 -70 -108。(计算机均为补码显示)转换为二进制负数的原码

-28 原码为1110 0100

-70 原码为1011 1010

-108原码为1001 0100刚好跟最后得到的UTF-8编码值为11100100 10111010 10010100 一致。

 

3.上面只是以UTF-8为例讲述一下 字符集 编码字符集 编码实现方案 之间的关系。同样GBK 也和UTF-8一样有类似的与unicode转换的规则。因为GBK 是双字节定长编码,所以转换规则为 110XXXXX 10XXXXXX。不同的编码方式采用不同的转换规则,这样构成了所谓的“编码”

JMeter 基础配置:修改编码格式、修改内存大小、页面汉化、外观主题 JMeter基础设置,修改编码格式、修改内存、页面汉化、修改外观主题 阅读详情

相关推荐

Eclipse黑色主题插件:提升编码体验

颜色方案对工作环境的影响颜色不仅影响着美学,更是工作环境的重要组成部分。一个适合个人习惯的颜色方案能够减轻视觉疲劳,提高工作效率。在编程工作中,颜色方案的好坏甚至会影响到代码的可读性和错误的易察觉性。选择适合个人习惯的颜色组合每个人对颜色的感受和偏好是不同的,因此选择颜色方案时应当基于个人习惯和需求。在面对众多现成的配色方案时,重要的是要找到一套既能满足工作需求又符合个人喜好的方案。为此,一些开发环境提供了颜色方案的自定义功能,使得开发者可以创建最适合自己使用的颜色配色。

weixin_42513928的博客 468

主题:深入分析 Java 中的中文编码问题

几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元—— byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的语言假定为英...

江夏lz的博客 143

手把手教你搞定国民技术N32G031的Keil开发环境(附Pack包和JLink配置)

本文详细指导如何搭建国民技术N32G031的Keil开发环境,包括Keil MDK安装与激活、Pack包导入、JLink调试器配置等关键步骤。特别针对新手常见问题提供解决方案,帮助开发者快速上手N32G031系列MCU的开发工作。

cuangu9341的博客 424

主题:深入分析 Java 中的中文编码问题(1)

几种常见的编码格式  为什么要编码  不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元—— byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的

轻风捉影的专栏 777

继电器的选型规范

触点是继电器中最重要的结构件,触点的使用寿命受触点材料、触点上的电压及电流值(特别是接通时及断开时的电压、电流波形)、负载种类、切换频率、环境情况、接触形式、触点回跳现象等的影响,触点失效多以触点的材料转移、粘连、异常消耗、接触电阻增大等故障现象出现,使用时需要注意。为了稳定工作, DC 型继电器的线圈两端所加电压推荐使用波纹变化率小于±5%的线圈额定电压,否则继电器会工作不稳定,引起触点的粘接或异常损耗,特别是在继电器的驱动电路上连接有电动机、螺线管、变压器等器件时,这种情况更为明显。

qq_43416206的博客 1881

Python实现高光谱图像生成与增强:从RGB到多光谱转换(附完整代码)

本文分享一个基于Python的实用工具,能够将普通RGB图像转换为模拟高光谱图像,并进一步生成增强的彩色可见图像。为了直观展示图像细节,程序通过对特定波段的组合,生成了一幅增强的 RGB 彩色图像。该函数的主要目标是将一张普通的 RGB 图像转换为包含多个波段的高光谱图像。通过该函数,我们能直观地看到高光谱图像经过波段组合后所得到的彩色图像效果。通过以上代码,我们可以实现对海量图像数据的自动化处理,极大地提升工作效率。已附在文中,欢迎下载测试!通过以上步骤,我们可以生成一幅包含多个光谱波段信息的图像。

m0_74824642的博客 3666

主题:深入分析 Java 中的中文编码问题(2)

接上一篇: 君山的编码结果分别是:e5 90 9b e5 b1 b1,be fd c9 bd,查阅上一届的编码可知,PathInfo 是 UTF-8 编码而 QueryString 是经过 GBK 编码,至于为什么会有“%”?查阅 URL 的编码规范 RFC3986 可知浏览器编码 URL 是将非 ASCII 字符按照某种编码格式编码成 16 进制数字然后将每个 16 进制表示的字节前加上“%”...

上善若水 211

UE5 C++教程(一、基本结构)

虚幻API由三块组成,分别是Runtime,Developer utilitiew,functionality for the Editor,大多数游戏性编程只使用运行时模块,最常见的三个是Corn、CornUObject和Engine。

skycol的博客 1万+

主题:java 编码转换工具 native2ascii (中文与Unicode等互转)使用小结

Java代码  native2ascii [options] [inputfile [outputfile]]         查官方api文档,命令如下:      官方对参数的解释也清晰简单,这里就不贴原文了,用自己语言描述下: 首先,[oprions],有如下两个命令可以选择:  “-reverse” :      将Latin-1或者Unicode编码转换为本地代码。(就

rex0y的专栏 867

把 SAP Query 用到极致:ABAP Query 的核心概念、配置流程、权限与运输治理全解析

摘要:SAP Query 是一款面向业务用户的自助报表工具,可解决标准报表无法满足业务需求的问题。其核心由四大组件构成:Queries(报表定义)、InfoSets(数据视图)、User Groups(权限分组)和Translation(多语言支持)。通过SQ03、SQ02、SQ01事务码分步创建用户组、数据视图和查询,业务用户无需ABAP知识即可生成Basic List(明细)、Statistics(统计)和Ranked List(排名)三种报表形式。典型案例展示了如何为采购部门设计包含明细追溯和Top1

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 181

基于Simulink的电力电子系统电磁兼容性(EMC)仿真

在电力电子系统中,由于高频开关器件的存在,会产生大量的电磁干扰(EMI),这对系统的稳定性和可靠性提出了挑战。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电力电子系统的电磁兼容性。本教程将详细介绍如何使用 Simulink 进行电力电子系统的电磁兼容性仿真。通过本教程,我们详细介绍了如何使用 Simulink 进行电力电子系统的电磁兼容性仿真。为了模拟电力电子系统中的电磁干扰(EMI),我们需要添加噪声源模块。为了更好地分析系统的电磁兼容性特性,可以在模型中添加频谱分析工具。

amy_mhd的博客 1126

idea 主题插件_给你的 IDEA 换个酷炫的主题!

文章来源 |blog.youkuaiyun.com/weixin_46146269/article/details/104793277IntelliJ IDEA介绍IDEA,全称 IntelliJ IDEA ,是 Java 语言的集成开发环境, IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能 代码助手、代码自动提示、重构、 J2EE支持、 Ant 、 JUnit 、 CVS ...

weixin_31225753的博客 1万+

网工运维掌握OpenClaw这7大必备技能,自动化运维效率直接起飞

OpenClaw的核心就是它的技能系统。通过官方技能市场(clawhub.ai),你只需一条命令就能安装扩展,让AI代理变成你的“运维副手”。今天我就结合网工运维的真实痛点,精选7项最热门、最实用的OpenClaw技能(基于ClawHub下载量和实际测试),手把手教你安装、使用和进阶玩法。这些技能不是玩具,而是能直接提升运维效率10倍以上的生产力工具!安装后,你的OpenClaw代理就能自动处理Zabbix告警、总结syslog日志、更新Obsidian网络拓扑笔记、甚至通过n8n触发自动修复脚本。

网络技术联盟站 574

idea主题推荐_给自己换个IDEA炫酷主题!这个有点好看啊

作者:CodeWhite7原文:https://blog.youkuaiyun.com/weixin_46146269IntelliJ IDEA介绍IDEA,全称 IntelliJ IDEA ,是 Java 语言的集成开发环境, IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能 代码助手、代码自动提示、重构、 J2EE支持、 Ant 、 JUnit 、 CVS 整合、代码审查、创...

weixin_36246453的博客 545

在STM32F103RBT6微控制器上利用USB虚拟Com端口技术,高效实现ADC数据传输:详细操作步骤与示例代码解析

以上就是在STM32F103RBT6上使用USB虚拟Com端口实现ADC数据传输的全部内容。虽然过程中有很多步骤和细节需要注意,但只要按照步骤来,理解每一段代码的作用,就完全可以掌握这个过程。在实际应用中,我们可能需要根据实际需要修改一些代码,如调整ADC的参数,改变数据的处理方式等。但是,只要理解了这个过程,我们就可以很灵活地进行修改。希望这篇文章对你有所帮助。如果你有任何疑问,欢迎在评论区留言,我会尽我所能进行解答。

qq_38334677的博客 1168

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

这几款 IDEA 主题也太好看了吧!!

经常有小伙伴问我:“乔哥,你的 IDEA 主题怎么这么好看,能推荐一下不?”。就实在有点不耐烦了,才索性写了这篇文章。在这篇文章中,我精选了几个比较适合 Java 编码的 IDEA 主...

WantFlyDaCheng的博客 9261

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IDEA 主题、字体、编辑区主题、文件编码修改

本篇内容为大家提供的是IntelliJ IDEA 使用教程中的IntelliJ IDEA 主题、字体、编辑区主题、文件编码修改,IntelliJ IDEA是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。 。感兴趣的同学

q287507383的博客 614

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java 创建kafka主题

本文简要介绍Apache Kafka,并使用Java编码方式创建、配置kafka主题。 Kafak 介绍 Apache Kafka是强大、高性能、分布式的事件流平台。通常生产者应用程序发布事件到Kafka,消费者订阅这些事件以便读取和处理它们。Kafka使用主题来存储和分类这些事件,例如,在一个电子商务应用程序中,可能有一个“订单”主题。 Kafka主题是分区的,它将数据分布在多个代理上以实现可伸缩性。分区可设置副本,从而使数据具有容错性和高可用性。主题还可设置保留策略,便于后期使用。这些都可以通过Ka.

neweastsun的专栏 3639

JAVA字符编码系列三:Java应用中的编码问题

 这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考。为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问题,特别是乱码问题,我觉得组成一个系列来描述和分析更好一些,包括三篇文章:第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础第二篇:JAVA字符编

qinysong的专栏 4万+

java eml 主题解码 GBK

给大家整理了一些有关【Java】的项目学习资料(附讲解~~):https://edu.51cto.com/course/35714.htmlJava EML 文件主题解码:GBK编码解析 在很多应用场景中,尤其是邮件处理与存储中,EML(邮件)文件格式被广泛采用。一般来说,EML 文件中包含了邮件的全部内容,包括主题、正...

weixin_41083513的博客 229

这几款 IDEA 主题也太好看了吧,百看不腻

在这篇文章中,我精选了几个比较适合 Java 编码的 IDEA 主题供小伙伴们选择。另外,我自己用的是 One Dark theme 这款。 注意:以下主题按照使用人数降序排序。推荐指数仅为个人看法。 Material Theme UI[1] 推荐指数:⭐⭐⭐⭐ 这是 IDEA 中使用人数最多的一款主题。 当你安装完这个插件之后,你会发现这个主题本身又提供了多种相关的主题供你选择。 Material Deep Ocean这款的效果图如下。默认的字体是真的小,小伙伴们需要自行调整一下。..

m0_63437643的博客 2万+

java获取文件编码

java编码 移位运算 获取文件编码

Benjamin 9539

emacs:黑暗主题提升编码体验

emacs:黑暗主题提升编码体验 项目介绍 Dracula 是一个专为 Emacs 编辑器设计的黑暗主题。这款主题不仅带来了视觉上的舒适体验,还能在长时间编程时减轻视觉疲劳。Dracula 主题以深色背景和鲜明对比的文字颜色为特点,旨在为开发者提供一个沉浸式且高效的工作环境。 项目技术分析 Dracula 主题通过自定义 Emacs 的颜色方案来实现其独特的视觉效果。用户可以根据自己的喜好和需求,...

gitblog_00654的博客 530
上一篇: JAVA设计模式
下一篇: 自己动手编译Windows版的OpenJDK 7
程序员迈克
博客等级 码龄16年 36粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值