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

文字的编码方式————不同UTF之间的区别

目录1. 编码与字体A. ASCIIAmerican Standard Code for Information InterchangeB. ANSIC. UNICODE2 . UNICODE 编码实现1UTF-16a. UTF-16 LEb. UTF-16 BE2UTF-83UTF-321. 编码与字体对于同一个字符在文件中保存的是他的编码值这些文字什么形态是由字符文件决定的。编码值和字体是两个不一样的东西例如B的编码值是0x42但是在屏幕上显示出来时可以有不同形状如繁体字与简体中文的区别。什么叫编码就是一个字符用什么数字来表示。在计算机里一切都是用数字来表示比如字符 A用 0x41表示当我们打开文件发现里面含有数值0x41你就知道了这是一个字符A。一个字符用哪个数值来表示有很多标准常用的有三个ASCII、ANSI、UNICODE。A. ASCIIAmerican Standard Code for Information InterchangeASCII是由西方发明的表示常用字符字母区分大小写加上标点符号不超过127个每个字符用一个字节表示足够了。一个字节的7位就可以表示128个字符所以在ASCII码中最高位永远是0。具体字符与数值的对应关系可以参考ASCII_百度百科。B. ANSIASNI 是 ASCII 的扩展向下包含 ASCII。对于 ASCII 字符仍以一个字节来表示对于非 ASCII 字符则使用 2 字节来表示。并没有固定的 ASNI 编码它跟“本地化”(locale)密切相关。比如在中国大陆地区 ANSI 的默认编码是 GB2312在港澳台地区默认编码是 BIG5。对于不同国家它们默认的ANSI 编码各不相同所以同一个 TXT 文件在不同国家就很有可能出现乱码。根本的原理在于没有“统一的编码”那解决方法自然就是使用“统一的编码” UNICODE。C. UNICODE对于英文来讲ASCII码就足以编码所有字符但对于中文则必须使用两个字节来代表一个汉字这种表示汉字的方式习惯上称为双字节。虽然双字节可以解决中英文字符混合使用的情况但对于不同字符系统而言就要经过字符码转换非常麻烦如中英、中日、日韩混合的情况。为解决这一问题很多公司联合起来制定了一套可以适用于全世界所有国家的字符码不管是东方文字还是西方文字一律用两个字节来表示这就是UNICODE。2 . UNICODE 编码实现编码实现就是如何将字符准确表示出来比如“中”在UNICODE中对应的是0x4e2d如果直接使用0x4e2d是不行的但是如果使用两字节”0x4e 0x2d“表示又对应上了ASCII中的字符“-N”。所以用数值表示字符需要定一套技巧。在ASCII和ANSI编码中表示字符非常简单ASCII中使用一个字节来表示一个字符ANSI中对于ASCII中存在的仍然使用一个字节表示非ASCII字符的使用两个字节表示。对于UNICODE的表示就有点复杂了如果与ASCII和ANSI一样直接表示这样会太浪费了。UNICODE 编码的实现主要有三种形式分别是 UTF-8、UTF-16 和 UTF-32。这三种编码方式各有特点适用于不同的场景。1UTF-16适用场景在一些操作系统和编程语言中广泛使用如Java和Windows系统中的内部字符串处理。UTF-16又分为两种一种是UTF-16 LE另一种是UTF-16 BE。对于BMP基本多文种平面内的字符他们都用两个字符表示但是又存在不同。a. UTF-16 LEUTF-16 LE又称UCS-2 Little endianLittle endian 表示小字节序数值中权重低的字节放在前面比如字符“K 华”在 TXT 文件中的数值如下其中的“ K”使用“0x4B 0x00”两字节表示“华”使用“0x4e 0x53”两字节表示。文件开头的“ 0xff 0xfe”表示“UTF-16 LE”。b. UTF-16 BEUTF-16 BE又称UCS-2 Big endianBig endian 表示大字节序数值中权重低的字节放在后面比如字符“K华”在 TXT 文件中的数值如下其中的“ K”使用“ 0x00 0x4b”两字节表示“华”使用“ 0x53 0x4e”两字节表示。文件开头的“ 0xfe 0xff”表示“UTF-16 BE”此处小编不知道怎么使用Ultra Edit打开带BOM的UTF-16 BE所以图片没有显示“ 0xfe 0xff”有知道方法的评论区指导一下。2UTF-8适用场景因其高效性和广泛的兼容性UTF-8 成为了互联网上最常用的文本编码方式。UTF-16 LE/UTF-16 BE缺点表示的字符数量有限对于 ASCII 字符有空间浪费如果文件中有某个字节丢失这会使得后面所有字符都因为错位而无法显示使用 UTF8 可以解决上述所有问题。 UTF8 是变长的编码方法有 2 种 UTF8格式的文件带有头部、不带头部。带头部的会多出三个字节“0xef 0xbb 0xbf”。小编展示的是不带头部的。对于其中的 ASCII 字符在 UTF8 文件中直接用其 ASCII 码来表示比如上图中的“ 0x4b”表示字符“K”。上图中的 3 个字节“ 0xe5 0x8D 0x8E”表示的数值是0x53 0x4e对应“中”的UNICODE 码。上图中 0xe5 的二进制是“ 11100101”高位有 3 个 1表示从当前字节起有 3 字节参与表示 UNICODE0x8d 的二进制是“101001101”高位有 1 个 1表示从当前字节起有 1 字节参与表示 UNICODE0x8e 的二进制是“10001110”高位有 1 个 1表示从当前字节起有 1 字节参与表示 UNICODE除去高位的“ 1110”、“ 10”、“ 10”后剩下的二进制数组合起来得到“0101 0011 0100 1110”它就是 0x53 0x4e即“华”的 UNICODE 值。使用 UTF8 编码时即使 TXT 文件中丢失了某些数据也只会影响到当前字符的显示后面的字符不受影响。3UTF-32适用场景主要用于内存中的字符串处理尤其是在需要快速访问单个字符的场合。每个字符固定使用4个字节来表示。虽然简单直接但由于每个字符占用的空间较大因此在存储效率上不如UTF-8和UTF-16。

相关文章:

文字的编码方式————不同UTF之间的区别

目录 1. 编码与字体 A. ASCII(American Standard Code for Information Interchange) B. ANSI C. UNICODE 2 . UNICODE 编码实现 (1)UTF-16 a. UTF-16 LE b. UTF-16 BE (2)UTF-8 (3&#xff…...

Protocol

在Python的世界里,Protocol这个概念,其实挺有意思的。它不是那种一上来就让人眼前一亮的语法糖,也不是什么解决具体问题的现成工具。它更像是一种约定,一种让代码“说清楚自己”的方式。如果你写过一段时间Python,尤其…...

TypeVar

## 关于Python里的TypeVar,你可能想知道的 最近在整理一些旧代码,翻到几年前写的一个通用缓存工具类,里面用到了TypeVar。当时注释里只简单写了一句“用于类型提示”,现在回头看,觉得可以展开聊聊这个东西。 TypeVar是…...

如何用Venera打造个性化漫画阅读体验?

如何用Venera打造个性化漫画阅读体验? 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 你是否曾经感到市面上的漫画阅读应用千篇一律,界面设计缺乏个性?或者希望在深夜阅读时,应…...

全方位解析GBFR Logs:《碧蓝幻想:Relink》战斗数据分析平台

全方位解析GBFR Logs:《碧蓝幻想:Relink》战斗数据分析平台 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbf…...

性能测试中的“假阳性”:如何识别与避免?

在软件性能测试领域,“假阳性”是一个令测试团队既头疼又难以回避的挑战。它指的是测试报告或监控工具错误地发出性能警报,声称系统存在性能瓶颈或缺陷,但经过深入分析或在实际环境中验证,发现系统运行状态良好,并不存…...

Node.js企业级应用部署与运维完整方案:Google Cloud Platform实战指南

Node.js企业级应用部署与运维完整方案:Google Cloud Platform实战指南 【免费下载链接】nodejs-docs-samples Node.js samples for Google Cloud Platform products. 项目地址: https://gitcode.com/gh_mirrors/no/nodejs-docs-samples 想要构建稳定可靠的No…...

hello-uniapp自定义组件开发:打造属于你的UniApp组件库

hello-uniapp自定义组件开发:打造属于你的UniApp组件库 【免费下载链接】hello-uniapp uni-app框架演示示例 项目地址: https://gitcode.com/gh_mirrors/he/hello-uniapp UniApp作为一款优秀的跨平台开发框架,让开发者能够使用Vue.js语法编写一次…...

3个维度解析PhpWebStudy新版本:打造更稳定安全的本地开发环境

3个维度解析PhpWebStudy新版本:打造更稳定安全的本地开发环境 【免费下载链接】PhpWebStudy Lightweight Native Local Dev Toolbox for Windows, macOS & Linux. Run OpenClaw/n8n/Apache/Nginx/Caddy/Tomcat/PHP/Node.js/Bun/Deno/Python/Java/Go/Ruby/Perl/R…...

突破性能瓶颈:Rust如何重塑数据科学与AI的未来

突破性能瓶颈:Rust如何重塑数据科学与AI的未来 在当今数据驱动的时代,数据科学与AI领域正面临着前所未有的性能挑战。随着数据集规模的爆炸式增长和模型复杂度的不断提升,传统编程语言在处理高并发、大规模数据时逐渐显露出性能瓶颈。而Rust…...

Awesome Rust核心库精选:异步编程与网络开发

Awesome Rust核心库精选:异步编程与网络开发 本文深入探讨了Rust生态系统中的核心库,重点分析了异步运行时(Tokio与async-std)、网络编程库、HTTP客户端/服务器框架、数据序列化工具链以及密码学与安全相关库。通过对比分析各库的…...

RyTuneX:WinUI3驱动的Windows性能优化引擎

RyTuneX:WinUI3驱动的Windows性能优化引擎 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Windows 10 and 11. 项目地址: https:/…...

从数据小白到战斗大师:GBFR Logs如何帮你玩转《碧蓝幻想:Relink》

从数据小白到战斗大师:GBFR Logs如何帮你玩转《碧蓝幻想:Relink》 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/…...

4大维度全面掌控Cyber Engine Tweaks:打造专属赛博朋克2077体验

4大维度全面掌控Cyber Engine Tweaks:打造专属赛博朋克2077体验 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks 🌟 引擎核心&#x…...

MogFace-large模型版本管理实践:使用Docker镜像实现环境一致性

MogFace-large模型版本管理实践:使用Docker镜像实现环境一致性 你是不是也遇到过这样的场景?在本地电脑上跑得好好的MogFace-large人脸检测模型,一放到同事的机器或者服务器上,就各种报错:CUDA版本不对、Python包冲突…...

Anthropic一夜震撼升级:Claude获得「永久在线」,全球打工人变天

文章目录一、凌晨三点,你的电脑自己在加班二、从"睡美人"到"永动机":AI的觉醒之路1. 独立生存空间:专属侧边栏UI2. Webhook唤醒:AI开始自主感知世界3. 浏览器直连:深度集成Chrome三、CoworkConway…...

Fluxion多语言支持终极指南:从.lang文件到本地化shell脚本的完整实现

Fluxion多语言支持终极指南:从.lang文件到本地化shell脚本的完整实现 【免费下载链接】fluxion Fluxion is a remake of linset by vk496 with enhanced functionality. 项目地址: https://gitcode.com/gh_mirrors/fl/fluxion Fluxion是一款功能强大的无线网…...

低代码平台会取代程序员吗?面向软件测试从业者的专业深度分析

在数字化转型浪潮席卷各行各业的当下,低代码开发平台以其“可视化”、“拖拽式”和“快速交付”的特点,迅速成为企业信息化建设的热门工具。随之而来的,是一个萦绕在技术圈,尤其是软件开发与测试从业者心头的疑问:低代…...

轰动全国的“327国债期货事件”的四大赢家后来都怎么样了?

轰动全国的“327国债期货事件”的四大赢家后来都怎么样了?轰动全国的“327国债期货事件”,四大赢家28岁的魏东、29岁的袁宝璟、34岁的周正毅以及30岁的刘汉,一举实现资本原始积累,称霸一方。天道好还,四人最终悲剧谢幕…...

一键定位手机号码:免费开源的地理位置查询神器

一键定位手机号码:免费开源的地理位置查询神器 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors/lo/…...

Netbird iOS客户端连接问题分析与解决方案

Netbird iOS客户端连接问题分析与解决方案 Netbird作为一款优秀的P2P网络工具,在跨平台使用中可能会遇到一些兼容性问题。近期iOS客户端出现的连接异常现象引起了开发者社区的关注。本文将深入分析该问题的技术背景,并提供有效的解决方案。 问题现象描述…...

Windows 10终极清理:一键彻底卸载OneDrive完整指南

Windows 10终极清理:一键彻底卸载OneDrive完整指南 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/on/OneDrive-Uninstaller 还在为Windows 10自带的OneDri…...

思源宋体完整使用指南:如何免费获得专业级中文字体解决方案

思源宋体完整使用指南:如何免费获得专业级中文字体解决方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还记得上次为商业项目挑选字体时的头疼经历吗?看着那…...

缠论可视化革命:四维分析模型如何重构交易决策逻辑

缠论可视化革命:四维分析模型如何重构交易决策逻辑 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 一、问题重构:当技术分析成为交易认知的枷锁 凌晨3点,量化交易员陈…...

3步掌握本地语音合成:tts-vue离线语音包配置终极指南

3步掌握本地语音合成:tts-vue离线语音包配置终极指南 【免费下载链接】tts-vue 🎤 微软语音合成工具,使用 Electron Vue ElementPlus Vite 构建。 项目地址: https://gitcode.com/gh_mirrors/tt/tts-vue 还在为网络不稳定导致的语音…...

智能邮件中枢:OpenClaw+Qwen3.5-9B自动分类回复系统

智能邮件中枢:OpenClawQwen3.5-9B自动分类回复系统 1. 为什么需要自动化邮件处理 每天早晨打开邮箱,看到堆积如山的未读邮件时,那种窒息感我太熟悉了。作为外贸团队的独立开发者,我经常需要同时处理客户询盘、供应商报价、内部协…...

7个顶级CSS代码风格指南:Google、GitHub规范深度解析

7个顶级CSS代码风格指南:Google、GitHub规范深度解析 【免费下载链接】awesome-css :art: A curated contents of amazing CSS :) 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-css CSS代码风格指南是前端开发中确保代码质量、可维护性和团队协作一…...

Go OAuth2授权码流程:实现Web应用用户认证的终极指南

Go OAuth2授权码流程:实现Web应用用户认证的终极指南 【免费下载链接】oauth2 Go OAuth2 项目地址: https://gitcode.com/gh_mirrors/oa/oauth2 Go OAuth2授权码流程是现代Web应用用户认证的完整解决方案,为开发者提供了安全、标准化的身份验证机…...

HeidiSQL连接池管理终极指南:优化数据库性能的10个关键技巧

HeidiSQL连接池管理终极指南:优化数据库性能的10个关键技巧 【免费下载链接】HeidiSQL A lightweight client for managing MariaDB, MySQL, SQL Server, PostgreSQL, SQLite, Interbase and Firebird, written in Delphi and Lazarus/FreePascal 项目地址: https…...

英雄联盟Akari助手全攻略:解锁5大核心功能提升游戏体验

英雄联盟Akari助手全攻略:解锁5大核心功能提升游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 英雄联盟Akari助手是一款专…...