gpt4 book ai didi

java - 为什么在特定日期重新编译后,非罗马字符串的代码相同但结果不同?

转载 作者:行者123 更新时间:2023-11-30 02:23:11 25 4
gpt4 key购买 nike

我有以下代码,它接受一个字符串并通过调用 CRC32 方法生成另一个字符串。然而,相同的代码在 9 月 5 日左右重新编译之前和之后为非罗马字符串生成不同的输出。换句话说,在此日期之后,不同编译的输出是相同的,但与该日期编译之前的输出相比有所不同。我唯一能想到的是开发环境的影响,但我的Java版本没有变化。

        StringBuilder sb = new StringBuilder( );

if( item.UID != null && !item.UID.equals( "" ) )
{
sb.append( item.UID );
sb.append( "\t" );
}

if( item.LASTNAME != null && !item.LASTNAME.equals( "" ) )
{
sb.append( item.LASTNAME );
sb.append( "\t" );
}

if( item.FIRSTNAME != null && !item.FIRSTNAME.equals( "" ) )
{
sb.append( item.FIRSTNAME );
}

item.UNIQUE_ID_STRING = new String( sb ).toUpperCase( ).trim( );

CRC32 crc = new CRC32( );
crc.update( item.UNIQUE_ID_STRING.getBytes( ) );
String SERVICE_ID = Long.toString( crc.getValue( ) );

以输入的阿拉伯字符串“12 هmăm See More”为例,重新编译前的输出(SERVICE_ID)为6053713010,重新编译后的输出(SERVICE_ID)为3685688677。

它位于 Windows 7 Enterprise、Eclipse Java EE IDE Neon Release 4.6.0 下。如有任何帮助,我们将不胜感激。

最佳答案

当您对输入字符串调用 getBytes() 时,您不提供字符集。这将回退到提供的系统 - 这可能会根据您的设置或外部设置/操作系统更新而改变。

因此调用 getBytes(StandardCharsets.UTF_8) 应该更稳定

关于java - 为什么在特定日期重新编译后,非罗马字符串的代码相同但结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303534/

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