Unicode(统一码、万国码)是一种计算机字符编码标准,旨在为世界上所有的文字和符号提供唯一的数字编号。它为每个字符分配一个唯一的码位(Code Point),如汉字"中"的Unicode码位是U+4E2D。截至Unicode 15.0版本,已定义超过140,000个字符,覆盖几乎所有已知的书写系统。
Unicode定义了字符集(每个字符的唯一编号),而UTF-8(Unicode Transformation Format - 8-bit)是一种将Unicode码位转换为字节序列的编码方式。UTF-8使用变长编码:ASCII字符(U+007F以下)占1字节,常用文字占2-3字节,辅助平面字符占4字节。UTF-8是目前互联网上使用最广泛的编码方式,兼容ASCII且能表示所有Unicode字符。
在编程中,Unicode字符常以转义序列形式出现。JavaScript使用\u4E2D表示BMP字符,ES6起支持\u{20BB7}表示辅助平面字符。Python使用\u4E2D(4位)和\U00020BB7(8位)。CSS中使用\4E2D。HTML实体使用中(十进制)或中(十六进制)。本工具支持上述所有格式的编码和解码。
本Unicode编码解码工具操作简单且功能完善,以下是详细的使用指南:
文本转Unicode转义:在输入框中输入任意文本(支持中文、Emoji及所有Unicode字符),选择"文本 → Unicode转义"模式,点击"转换"按钮,工具会将每个字符转换为其对应的\uXXXX格式。对于辅助平面字符(如Emoji),会自动使用\u{XXXXXX}格式。结果区域会显示转换后的Unicode转义字符串。
Unicode转义解码:将Unicode转义字符串(如\u4e2d\u6587)粘贴到输入框,选择"Unicode转义 → 文本"模式,点击"转换"按钮即可还原为原始文本。工具会自动识别4位和6位(带花括号)两种格式,也支持混合输入。如果转义序列格式不正确,工具会提示错误信息。
HTML实体编码与解码:选择"文本 → HTML实体"模式,工具会将每个字符转换为十进制HTML实体(如中)。反向转换选择"HTML实体 → 文本"模式,支持十进制和十六进制两种HTML实体格式。这在处理Web安全转义和XSS防护时非常有用。
UTF-8字节转换:选择"文本 → UTF-8字节"模式,工具会显示每个字符对应的UTF-8字节序列(十六进制表示,如E4 B8 AD)。反向转换时,支持空格、逗号、0x前缀等多种分隔符格式。这对于分析字符编码和调试编码问题非常实用。
批量转换:工具支持大段文本的批量转换。输入长文本后,工具会逐字符处理,并在结果区展示完整的转换结果。建议使用"复制结果"按钮将结果保存到剪贴板。
Unicode编码转换在Web开发、数据处理和国际化项目中应用广泛,以下是几个典型的使用场景:
JavaScript字符串转义:在处理包含中文或特殊字符的JavaScript字符串时,为避免编码问题或确保JSON兼容性,常需要将字符串中的非ASCII字符转换为Unicode转义序列。例如将"中文测试"转为"\u4e2d\u6587\u6d4b\u8bd5",确保在不同编码环境下都能正确显示。本工具提供了一键转换功能。
HTML实体编码:在Web开发中,为了防止XSS攻击或处理特殊字符,需要将HTML特殊字符(如<、>、&)和国际化字符编码为HTML实体。例如将<script>转为<script>,有效防止代码注入。本工具支持批量HTML实体编码和解码。
数据编码调试:在处理来自不同来源的文本数据时,经常遇到编码不一致导致的乱码问题。通过将乱码文本转换为UTF-8字节序列,可以直观查看实际的字节内容,判断是否为编码识别错误、BOM标记缺失或字节顺序问题。本工具的UTF-8字节转换功能可帮助快速定位编码问题。
Emoji处理:Emoji字符跨越了基本多文种平面(BMP),需要使用代理对(Surrogate Pair)或\u{XXXXXX}格式表示。本工具完整支持所有Unicode Emoji的编码和解码,包括最新版本的Emoji 15.0字符。开发者可以使用本工具验证Emoji在不同编码格式下的正确性。
Unicode平面与区块:Unicode将字符空间划分为17个平面(Plane),每个平面包含65,536个码位。第0平面(BMP,U+0000到U+FFFF)包含最常用的字符,包括基本拉丁字母、中日韩统一表意文字等。第1-2平面包含历史文字和符号,第3-13平面尚未分配,第14平面为特殊用途,第15-16平面为私有使用区。Emoji主要位于第0平面(基本Emoji)和第1平面(扩展Emoji)。
UTF-8编码规则:UTF-8是一种前缀编码,通过字节序列的高位比特来标识字符长度。单字节字符以0开头(0xxxxxxx),多字节字符以110、1110、11110开头,后续字节以10开头。例如汉字"中"(U+4E2D)的UTF-8编码为E4 B8 AD,即二进制11100100 10111000 10101101。这种设计使得UTF-8具有自同步特性,即使从中间开始也能正确识别字符边界。
BOM(字节顺序标记):UTF-8文件有时会在开头添加BOM(EF BB BF),用于标识文件编码为UTF-8。虽然BOM在UTF-8中并不改变字节顺序(因为UTF-8是字节序无关的),但某些系统(如Windows记事本)会自动添加。在Unix/Linux系统中,BOM可能导致脚本执行错误(#!shebang行首出现额外字节)。本工具在转换时可以选择是否添加BOM。
Unicode是字符集(给每个字符分配唯一编号),UTF-8是编码方式(将Unicode编号转换为字节序列)。UTF-8是Unicode的一种实现方式,使用1-4个字节表示字符,兼容ASCII。
不是一回事,但密切相关。HTML实体如中表示Unicode编号为20013的字符(中)。Unicode编码如\u4e2d也是表示同一个字符,只是表示格式不同。
支持。本工具完整支持Emoji字符的编码解码,包括使用代理对(Surrogate Pair)表示的辅助平面字符。
不会。所有转换操作均在浏览器本地完成,数据绝不上传服务器,保障隐私安全。
工具在浏览器本地运行,理论上支持数万字符。但实际处理速度与设备性能相关,建议单次处理不超过10000字符以获得最佳体验。
JavaScript和Python的\u转义都使用4位十六进制表示BMP字符(U+0000到U+FFFF)。JavaScript还使用\u{xxxxxx}表示辅助平面字符(ES6+),Python 3使用\U000xxxxx表示。本工具同时支持这两种格式。
UTF-8使用变长编码:ASCII字符占1字节(U+007F以下),常用中日韩文字占3字节(U+0800到U+FFFF),辅助平面字符占4字节。大部分中文位于U+4E00到U+9FFF范围内,因此UTF-8编码后占3字节。
BOM(Byte Order Mark)是UTF-8和UTF-16文件开头的特殊字符(UTF-8为EF BB BF),用于标识编码和字节顺序。某些系统需要BOM来正确识别UTF编码,但多数现代应用可以自动检测。