在线 Unicode 编码/解码工具:处理 Unicode 字符转换
什么是 Unicode
Unicode 是一个国际标准,为世界上几乎所有书写系统的每个字符分配唯一的编号(码点,Code Point)。它解决了早期编码(ASCII、GB2312、Shift-JIS)的兼容性问题——用在线 unicode encoder/decoder 可以在这些表示形式之间转换,如果需要二进制到文本的编码则用 base64 decoder。
Unicode 表示形式
| 形式 | 示例 | 说明 |
|------|------|------|
| Unicode 码点 | U+4F60 | 标准表示法 |
| UTF-8 | \xe4\xbd\xa0 | 变长编码(1-4 字节) |
| UTF-16 | \u4f60 | 2 或 4 字节 |
| Unicode 转义序列 | \u4F60 | JavaScript/Java 中使用 |
| HTML 实体 | 你 | 十进制实体 |
| HTML 实体(十六进制) | 你 | 十六进制实体 |
为什么需要 Unicode 编码/解码
- 跨语言兼容:不同编程语言间的字符传输
- JSON 安全:确保 JSON 中的特殊字符正确传输
- 数据库存储:处理数据库的字符编码问题
- URL 编码:URL 中包含非 ASCII 字符时的编码
- 日志分析:处理包含 Unicode 字符的日志数据
- 国际化开发:处理多语言文本的编码转换
UTF-8 vs UTF-16
| 特性 | UTF-8 | UTF-16 | |------|-------|--------| | 字节数 | 1-4 字节 | 2-4 字节 | | ASCII 兼容 | ✅ 完全兼容 | ❌ 不兼容 | | 网络传输 | ✅ 主流 | ❌ 不常用 | | 字节序 | 无(无 BOM) | 有(大端/小端) | | 空间效率 | 英文高效 | 中文高效 |
如何使用在线工具
使用 ToolVault 工具匣 的 Unicode 编码/解码工具:
- 输入文本或 Unicode 编码字符串
- 选择编码/解码模式
- 支持多种格式输出:
\uXXXXJavaScript 转义&#XXXX;HTML 实体U+XXXXUnicode 标准表示
- 实时转换结果
代码中的 Unicode 处理
JavaScript
// 字符 → Unicode 码点
function toUnicode(str) {
return Array.from(str).map(char =>
'U+' + char.codePointAt(0).toString(16).toUpperCase().padStart(4, '0')
);
}
// Unicode 码点 → 字符
function fromUnicode(codePoint) {
return String.fromCodePoint(parseInt(codePoint.replace('U+', ''), 16));
}
// JavaScript 转义序列
function toEscaped(str) {
return Array.from(str).map(char =>
'\\u' + char.codePointAt(0).toString(16).padStart(4, '0')
).join('');
}
Python
import unicodedata
# 字符 → Unicode 码点
def to_unicode(char):
return f"U+{ord(char):04X}"
# Unicode 码点 → 字符
def from_unicode(code_point):
return chr(int(code_point.replace('U+', ''), 16))
# 获取字符信息
def char_info(char):
return {
'char': char,
'code_point': f"U+{ord(char):04X}",
'name': unicodedata.name(char, 'UNKNOWN'),
'category': unicodedata.category(char)
}
常见 Unicode 字符范围
| 范围 | 内容 | 示例 | |------|------|------| | U+0000-U+007F | 基本拉丁字母 | A, b, 1, ! | | U+0080-U+00FF | 拉丁补充 | á, ñ, ü | | U+0400-U+04FF | 西里尔字母 | А, Б, В | | U+4E00-U+9FFF | CJK 统一汉字 | 中, 文, 字 | | U+3040-U+309F | 平假名 | あ, い, う | | U+30A0-U+30FF | 片假名 | ア, イ, ウ | | U+1F600-U+1F64F | Emoji 表情 | 😀, 😂, ❤️ |
FAQ
为什么同一个汉字在不同编码中大小不同?
不同编码方式使用不同字节数:UTF-8 中汉字占 3 字节,UTF-16 中占 2 字节,GBK 中占 2 字节。这是编码方案设计的不同。
Unicode 和 UTF-8 有什么关系?
Unicode 是字符集标准(定义每个字符的编号)。UTF-8 是 Unicode 的一种编码实现(定义如何用字节表示这些编号)。UTF-8 是目前互联网最广泛使用的编码。
为什么有些中文字符显示为乱码?
常见原因:编码声明不匹配(文件用 UTF-8 保存但以 GBK 读取)、缺少字体支持、传输过程中编码转换错误。确保全链路使用统一的 UTF-8 编码;当字符显示异常时,可以用 unicode encoder/decoder 检查底层码点。
本文由 ToolVault 工具匣 提供。更多开发者工具请访问 首页。
相关工具
相关文章
字符编码乱码排错手册:中文乱码、URL 编码、Base64 一次讲清
中文变问号、锟斤拷、%E4%B8%AD 看不懂?本手册按症状速查,覆盖乱码成因、URL 百分号编码、Base64 中文问题、Unicode 转义四类高频场景,附编码基础速查与排查流程。
中文 URL 编码后变成 %E4%B8%AD 这种 %XX,正常吗?
网址里的中文变成一串 %E4%B8%AD 这样的百分号编码正常吗?为什么需要编码、编码规则是什么、怎么解码回来、前端如何处理?附本站 URL 编解码工具。
Base64 解码后中文变成乱码 / 问号(�)怎么办?
Base64 解码后中文变成乱码或黑色问号方块怎么办?讲清"编码的是字节不是字符"这一根因,并给出命令行、代码和在线工具三种正确解法,全程本地处理。