相同的Java代码返回从Netbeans和-JAR文件运行的不同结果

时间:2014-05-25 07:20:08

标签: java netbeans encoding jar

当我尝试使用Netbeans运行java代码时,一切都很好,RC2加密代码给出了 5B\q\OI5c¸ä3î1Ü。但是从Windows运行编译的jar文件,输出是不同的5B?\q\O?I5cä3???1Ü?。如果我从linux运行相同的jar文件,问题就解决了。

1 个答案:

答案 0 :(得分:1)

几乎可以肯定,控制台在每种情况下处理非ASCII字符的方式。然而,这是你做一些你不应该开始的事情的必然结果:当你不应该这样做时,或者至少以你不应该这样做的方式将任意byte[]转换为String ,例如new String(byte[])。即使指定一个Charset(在文本和该文本的二进制表示之间进行转换时,你应该总是这样做)在这里也无济于事。

加密的结果是不是编码的文本 - 它只是字节。理想情况下,您应该将其保留为byte[] - 毕竟它只是二进制数据。如果您需要将其转换为文本,您应该使用hex或base64这样做,因为这样您将获得一个ASCII表示,总是可逆回到你原来的二进制数据。

对于base64,您可能需要考虑使用good public domain library