`
gelongmei
  • 浏览: 219054 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

char类型与Unicode编码

 
阅读更多
char类型与Unicode编码
Unicode(UTF-8, UTF-16)令人混淆的概念

Java的char型是非常独特的,占用两个字节,因为Java中char型采用了Unicode编码。

要理解这个问题,我们必须要理解什么是Unicode。

世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。

Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。与ASC2和ISO-8859-1类似,Unicode是一种编码方式,但是它所包括字符的范围却与之前的所有编码方式有着天壤之别。Unicode是一个囊括了几乎世界上所有文字的字符编码表。它的目标是任何文字都可以在其中找到唯一的编码,例如0041表示了字符A,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字“严”。它所要解决的主要问题是:不同语言和地区之间字符编码转换的问题,如果
采用了Unicode编码的话则不需要在不同的字符集之间切换,因为都包括在Unicode当中。
Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对 Unicode 编码的实现方式有所不同,具体由UTF(UCS Transformation Format)规范规定,常见的UTF规范包括UTF-8、UTF-16、UTF-32。

Java语言中char类型采用UTF-16编码格式。
从JDK1.5开始,代码点(code point)是指与一个编码表中某个字符对应的代码值。在Unicode标准中,代码点采用16进制数写,并加上前缀U+,例如U+0041就是字母A的代码点。Unicode代码点可以分成17个代码级别(code plane)。第一个代码级别称为基本的多语言级别(basic multilingual plane),代码点从U+0000到U+FFFF,其中包括了经典的Uncode代码;其余16个附加级别,代码点从U+10000带U+10FFFF,其中包括了一些辅助字符(supplementary character)。
UTF-16它采用不同长度的编码表示所有的Unicode代码点(是一种变长的编码方式)。在基本的多语言级别中,每个字符用16位表示,通常被称为代码单元(code unit);而辅助字符采用一对连续的代码单元惊醒编码。这样构成的代码值一定落入基本的多语言级别中空闲的2048字节内,通常被称为替代区域(surrogate area)(U+D800到U+DBFF用于第一个代码单元,U+DC00到U+DFFF用于第二个代码单元)。这种设计十分巧妙,我们可以从中迅速的知道一个代码单元是一个字符编码,还是一个辅助字符的第一或第二部分。
强烈建议不要再程序中使用char类型,除非确实需要对UTF-16代码单元进行操作。最好将需要处理的字符串用抽象数据类型表示。可以采用转义序列符/u表示Unicode代码单元。(为什么呢?)

写了段代码,从中可以可以基本理解Java的char、Unicode、代码点和代码单元的概念了,详见 Java中的基础类型,用二进制表示数字
分享到:
评论

相关推荐

    基于Linux平台的机器人控制系统与路径识别教程 - ROS开发移动机器人的核心技术

    内容概要:本文全面介绍了在Linux环境下开发移动机器人控制系统及路径识别的关键技术和流程,涵盖理论背景与工程实践,旨在使读者深入理解和掌握这一领域的知识。具体来说,首先阐述了机器人控制系统的基本概念及其在不同行业内的应用场景,如工业制造和服务型机器人的广泛应用。重点介绍了ROS平台作为机器人程序开发的主要载体,在传感器数据处理、路径规划以及控制算法的设计等方面的作用。接下来详细解释了图像处理技术和A*算法等路径识别方式的工作机制,并展示了基于摄像头采集图像进行简单黑线跟随的例子,同时加入了平滑路径中心点的技术,使得即使存在外部干扰因素仍能保持较好的识别效果。另外,还涉及了PID控制器的应用,以确保机器人能够精确沿着既定轨迹行驶,并且探讨了利用SLAM技术和深度强化学习来优化整个系统的可行性。此外,最后的部分则针对可能出现的问题提供了调试技巧和支持资料查询的方式。 适合人群:具备一定机器人基础知识和技术储备的学生或者从事自动化设备研制的专业技术人员。 使用场景及目标:①学习如何建立自己的移动机器人项目,包括但不限于软硬件选型和集成;②熟练运用ROS构建复杂的任务规划系统和高效的感知决策

    基于YoloX目标检测DeepSort算法实现多目标追踪Baseline.zip

    yolo

    基于深度感知对抗损失的语义通信图像传输系统优化(可复现,有问题请联系博主)

    内容概要:本文提出了一种新的深度联合源信道编码(deep JSCC)方法,用于端到端无线高保真图像语义传输。传统deep JSCC系统通常采用如PSNR或MS-SSIM的传统失真度量进行优化,在低带宽情况下这些度量失效。为此,本文引入了对抗损失和感知损失,使模型能够捕捉全局语义信息和局部纹理特征,从而在低带宽条件下重建更接近人眼视觉质量的图像。文中详细介绍了系统的架构与训练方法,展示了与现有编码传输方案对比时的优势,并进行了广泛的实验评估与用户研究验证其有效性。结果表明,相比最新工程化的图像编码传输方案和其他现有的deep JSCC方法,新方法可以节省约50%的无线通道带宽成本。 适合人群:对计算机视觉、通信理论有兴趣的研究者和技术爱好者,尤其是从事无线通信和深度学习交叉领域的科研工作者。 使用场景及目标:适用于希望利用深度学习改进无线网络性能的项目,特别是在提升视觉内容质量和减少所需带宽资源的应用场景。 其他说明:文中所提出的新型deep JSCC模型不仅实现了更高的人工观感质量,同时也降低了通信链路所需的带宽消耗。这将对未来更加高效的图像数据传输提供重要指导和支持。

    新能源集团企业数字化转型、数据治理、数字化平台建设方案(346页+WORD).docx

    新能源集团企业数字化转型、数据治理、数字化平台建设方案(346页+WORD).docx

    Windows中VS2022配置Ubuntu的C/C++编译环境

    Windows中VS2022配置Ubuntu的C/C++编译环境

    学习资料20250324

    学习资料20250324

    模块五:云原生训练营-Kubernetes控制平面组件etcd

    内容概要:本文详细介绍了Kubernetes控制平面的关键组件——etcd的相关概念及其功能,涵盖了etcd的基本特性和应用场景,重点描述了其实现高可用性的方案,如Raft共识算法的应用、集群安装配置步骤、常用操作演练、故障诊断等关键技术细节。此外还探讨了etcd作为Kubernetes集群存储引擎时的最佳实践,包括性能优化措施和备份容灾方法,并列举了多个实战案例辅助理解。 适用人群:适用于有Kubernetes使用经验的操作员,希望深入了解底层技术运作的系统管理员和技术主管。 使用场景及目标:①学习如何搭建可靠的Kubernetes环境;②深入理解和优化etcd的各项性能参数;③掌握处理集群中可能出现的各种问题的技巧;④研究基于etcd的消息发布与订阅模型以及服务注册发现机制。 其他说明:文中附有许多具体的安装和配置指令可以帮助新手快速入门etcd管理和维护技能。对于关注集群管理与服务治理领域的技术人员来说极具价值。

    2025年3月CCF编程能力认证(C++)一级.pdf

    2025年3月CCF编程能力认证(C++)一级.pdf

    单片机设计 单片机串行通信发射机设计与实现的详细项目实例(含完整的硬件电路设计,程序设计、GUI设计和代码详解)

    内容概要:本文详细介绍了一款单片机串行通信发射机的设计与实现,涵盖硬件电路、程序设计、GUI设计及代码详解。文章强调了该项目的重要性及其提升单片机通信能力的目标,同时解决了诸如协议选择、传输速率提升、功耗管理等关键问题,并在创新性设计如多协议支持、高可靠性错误检测机制等方面进行了探讨。项目旨在实现工业自动化、物联网、智能家居等应用场景中的多设备互联互通,提高了系统扩展性和适应不同通信标准的能力。 适合人群:有一定单片机开发经验,特别是从事嵌入式系统、通信工程等相关领域工作的研发人员和高校教师学生。 使用场景及目标:适用于嵌入式系统开发中的通信环节,解决低功耗高性能通信需求,如工业自动化现场总线、智能家居节点通信等;目标在于提升单片机通信效率、可靠性和兼容性,培养开发者对底层通信机制的理解。 其他说明:文章附带有完整的软件架构说明、功能模块细分及代码片段示范,有助于读者深入理解和实操练习;提供的GUI设计方案则为项目增添了人机交互维度,提高了最终产品的用户体验。

    tuned-profiles-compat-2.16.0-1.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统tuned-profiles-compat-2.16.0-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf tuned-profiles-compat-2.16.0-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    华为USG2220BSR v300r001c10spc700固件

    华为USG2220BSR v300r001c10spc700固件

    分别使用OpenCVONNXRuntime部署YOLOV7目标检测一共包含14个onnx模型依然是包含C和Python.zip

    yolo

    AUTOSAR-SWS-WatchdogInterface规范PDF及图解一键下载!

    用图解的方式让晦涩艰深的AUTOSAR标准通俗易懂~~

    Delphi 12.3控件之文件夹同步工具Delphi源代码(这是利用AI完成的一个代码).rar

    Delphi 12.3控件之文件夹同步工具Delphi源代码(这是利用AI完成的一个代码).rar

    32.基于51单片机的自动浇花系统设计(实物).pdf

    32.基于51单片机的自动浇花系统设计(实物).pdf

    移动机械齿轮箱同步器齿套设计及其生产工艺

    内容概要:本文详细介绍了同步器齿套在移动机械齿轮箱中的应用特点和设计方案,特别是其关键部位如梅角、倒角、倒锥及预同步滑块槽的作用机制。还阐述了由德国轴承制造商舍弗勒(Schaeffler)生产的齿套的特点及其先进的生产工艺,重点提到采用冲压工艺带来的多项优势,并展示了不同型号的具体尺寸数据。 适合人群:从事齿轮传动系统设计的专业工程师和技术人员。 使用场景及目标:适用于正在研究同步器内部构造原理的研究者们,在实际项目中可以借鉴这些成熟的工业设计标准来指导新产品开发。 其他说明:舍弗勒公司能够提供单独的零部件也可以供应整套组合单元,从而简化装配流程并提高产品质量。文中列举了一些特定型号的产品规格供使用者选择参考。此外还包括一些常见的故障诊断方法与维护保养措施等方面的简短介绍。

    基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明

    基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明,个人大四毕业设计项目、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速推理源码+文档说明基于Qt部署YOLOv5使用opencv-dnn-cuda加速

    此存储库包含使用YOLOv10对象检测模型和DeepSORT算法进行视频中对象检测和跟踪的代码.zip

    yolo

    271.基于51单片机的电子钟【12,24,闹钟,LCD1602,独立按键,DS1302】(仿真).pdf

    271.基于51单片机的电子钟【12,24,闹钟,LCD1602,独立按键,DS1302】(仿真).pdf

    49.基于51单片机的光控小夜灯设计(仿真).pdf

    49.基于51单片机的光控小夜灯设计(仿真).pdf

Global site tag (gtag.js) - Google Analytics