如何解决将ASCII表情符号转换为十六进制
在大多数情况下,ascii转换为十六进制即可。
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转换之间做得有些愚蠢,但由于某种原因我无法弄清楚。任何帮助表示赞赏。
解决方法
您期望的字符集是Windows-1252,而不是UTF-8。
byte[] bytes = "🙂".getBytes(Charset.forName("windows-1252"));
for (byte b : bytes)
System.out.printf("%02x",b & 0xff);
输出:
F09F9982
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。