Java反编译器给出了奇怪的符号

Java反编译器给出了奇怪的符号,java,reverse-engineering,decompiler,unicode-literals,Java,Reverse Engineering,Decompiler,Unicode Literals,我正在使用一个Java反编译器,它似乎给出了一个合理的代码,只是它为常量整数提供了奇怪的符号。例如: #int[] arr = new int['田']; 此符号的数值为U+7530。我想知道它是否能将这个符号恢复到它的数值,或者我不能依赖这个机制 我的问题是,这段代码给出了一个数组越界异常,因此调整数组的大小非常重要。在字节码级别,局部变量对布尔、字节、字符、短字符和整数没有区别。所有内容都被编译成int,并在适当的地方插入截断指令 这意味着反编译器必须任意决定将其反编译到哪种类型(假设没有

我正在使用一个Java反编译器,它似乎给出了一个合理的代码,只是它为常量整数提供了奇怪的符号。例如:

#int[] arr = new int['田'];
此符号的数值为U+7530。我想知道它是否能将这个符号恢复到它的数值,或者我不能依赖这个机制


我的问题是,这段代码给出了一个数组越界异常,因此调整数组的大小非常重要。

在字节码级别,局部变量对布尔、字节、字符、短字符和整数没有区别。所有内容都被编译成int,并在适当的地方插入截断指令


这意味着反编译器必须任意决定将其反编译到哪种类型(假设没有调试元数据)。看起来您的反编译器决定将整数常量反编译为字符常量。

您没有给操作系统。猜测是您将操作系统的区域设置设置为需要完整unicode的区域设置。如果是这样,设置为US或另一个说英语的可能会导致常量解析为整数而不是unicode字符田' == 30000人;由于数组索引始终是整数,所以使用
与否没有区别田'
30000
。谢谢。现在有道理了。@Badawi,对于这种情况,您采取了什么解决方案,我们的一些.class文件存在类似的问题,当下标为3位数字时,它显示为一些特殊字符,但是4位数字很好,有没有其他反编译器不这样做,比如将数字常量视为字符常量?如果你这样问的话,Krakatau反编译器不会输出字符文本。