gpt4 book ai didi

java - 将 UTF-8 代码(例如 E052E472E04F)转换为文本

转载 作者:行者123 更新时间:2023-12-01 10:01:17 26 4
gpt4 key购买 nike

我正在使用我在网上找到的一些资源,其中包含 UTF-8 代码而不是真实文本(因为它是阿拉伯语),而且我完全不知道如何将其转换为 Java 中的真实文本。

例如:

breakme~E052E472E04FE46CE04EE051E46F0020E027E04BE43EE052E484E04EE4370020E052E027E47EE04FE478E050E473E412E04EE4630020E052E472E04FE46CE050E051E421E04EE051E0310020E476E050E4730020E050E051E466E04EE434E052E46FE41EE050E4210020E04FE044E47EE04FE443E04EE051E43EE46FE0270020E04FE472E04FE46BE021E41EE04EE42F0020E052E43AE04EE4670020E04FE033E41EE04EE051E478E46FE0270020E41EE04EE47CE04FE051E483E04EE0230020E41EE04EE483breakme

谢谢。

编辑:

我对源代码进行了逆向工程,结果如下:

public char[] getUnicodeString(String paramString) {
int j = paramString.length() / 4;
char[] arrayOfChar = new char[j];
int i = 0;
for (; ; ) {
if (i >= j) {
return arrayOfChar;
}
arrayOfChar[i] = ((char) Integer.parseInt(paramString.substring(i * 4, i * 4 + 4), 16));
i += 1;
}
}

这有帮助吗?

最佳答案

不是 UTF-8。 UTF-8 是一种编码,其中字节要么是 00-7F 范围内的单个字节,要么是第一个字节在 C0-FF 范围内的多个字节,后跟 1 到 3 个字节在 80-BF 范围内。显示的序列与该模式不匹配,因此它不能是 UTF-8。

它似乎是一个 2 字节编码,带有一些 0020 值,这些值似乎是 unicode 空格字符。如果您显示分开的 2 字节十六进制代码并在 0020 空格后换行,您将得到这个稍微更容易阅读的序列:

E052 E472 E04F E46C E04E E051 E46F 0020
E027 E04B E43E E052 E484 E04E E437 0020
E052 E027 E47E E04F E478 E050 E473 E412 E04E E463 0020
E052 E472 E04F E46C E050 E051 E421 E04E E051 E031 0020
E476 E050 E473 0020
E050 E051 E466 E04E E434 E052 E46F E41E E050 E421 0020
E04F E044 E47E E04F E443 E04E E051 E43E E46F E027 0020
E04F E472 E04F E46B E021 E41E E04E E42F 0020
E052 E43A E04E E467 0020
E04F E033 E41E E04E E051 E478 E46F E027 0020
E41E E04E E47C E04F E051 E483 E04E E023 0020
E41E E04E E483

因此,虽然 0020 看起来是一个空格,但其余值都是 Exxx,整个 E000-F8FF 范围是在 unicode 中定义为“私有(private)使用”。

所以,不知道它是什么,但它不是 unicode 的 UTF-8 或 UTF-16 编码。

我猜这可能是一些旧的 DBCS(双字节字符集)代码页。

关于java - 将 UTF-8 代码(例如 E052E472E04F)转换为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36783876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com