【发布时间】:2020-12-15 22:18:00
【问题描述】:
在大多数情况下,ascii 到 hex 的转换适用于此。
Hex.encodeHex(ascii.getBytes(StandardCharsets.UTF_8))
但是,这似乎并不完全正确。我试图将“略带微笑的脸”ascii (🙂) 转换为十六进制并不断得到正确但不正确的“c3b0c5b8e284a2e2809a”。我正在寻找的值是“F09F9982”,当将 ascii 放入文件中时执行“od -x”时很容易计算出来。你甚至可以在 Notepad++ 中完成。
我想不通的是我在尝试编写 Java 等效代码时到底做错了什么。我什至尝试将 String.getBytes 转换为 UTF-8,然后将其构建为 UTF-16 的字符串,但仍然无法获得正确的结果。我的结果不断收到“c3b0c5b8e284a2e2809a”。
有人知道如何生成正确的值吗?
我很确定我在 UTF-8 和 UTF-16 转换之间做了一些愚蠢的事情,但由于某种原因我无法弄清楚。任何帮助表示赞赏。
【问题讨论】:
-
“略带微笑的脸”无法用 ASCII 表示。
🙂来自哪里?
标签: java unicode hex emoji utf-16