十六进位转文字
在浏览器里把十六进位字节转成文字并转回来,字元编码由你选择,而不是由工具猜。
在你的浏览器中运行
同样的字节在不同编码下是不同的文字,所以这是一个选择,不是细节。
还没有东西可以转换。
在你说明怎么读之前,字节还不是文字
这是大多数转换器因为「没说」而做错的事:它们把十六进位转成文字,却不告诉你用的是哪一种 编码。对 ASCII 来说没差,对其他所有东西来说就是乱码。
字节 E5 8F B0 在 UTF-8 下是 台。当成 Latin-1 读则是三个各自独立的字元,其中一个
还是看不见的控制码。两种读法都合法,但只有一种是你要的。
所以编码在这里是一个看得见的选项,默认 UTF-8:
- UTF-8——大约 2010 年之后的几乎所有东西。
- Latin-1——较旧的西欧数据,也是唯一一种「任何字节序列都是合法文字」的编码。
- UTF-16 LE / BE——Windows API、Java 内部,以及任何带有字节顺序记号的东西。字节 顺序是一个真正的选择,不是细节。
不合法的输入会被回报,而不是被糊过去
不是合法 UTF-8 的字节会产生一个指出问题的错误消息,而不是一串 “ 替代字元。
这一点很重要,因为替代字元看起来像数据。在输出里看到它,大家很合理地会以为原始数据里 本来就有,然后往完全错误的方向去找。而「这些字节不是合法的 UTF-8,试试 Latin-1」直接 指向真正的答案。
十六进位数字是奇数个时也会被拒绝。半个字节不是字节,而要猜该补在前面还是后面,是产生 自信错误输出的好方法。
字节数和字元数是两个不同的数字
两个都会显示,而这个差别通常正是有人来到这一页的原因。
台北 在 UTF-8 下是2 个字元、6 个字节。一个 VARCHAR(10) 的数据库栏位可能指的是
其中任何一种,而是哪一种决定了这段文字放不放得下。Emoji 更夸张:👨👩👧 是 5 个码位、
25 个字节。
可以贴什么进来
48 65 6c 6c 6f、48656c6c6f、48:65:6C:6C:6F、0x48, 0x65 和 48-65-6c-6c-6f 都会
被以同样的方式读取。分隔符号一律忽略,大小写也没差。
没有任何上传
在这个页面里转换。正在被检视的十六进位倾印,往往是某个私密东西的片段。