从UTF-8到EUC-JP的Groovy中的字符编码转换

问题描述 投票:2回答:1

我们需要为我们的服务之一进行字符编码转换,我们的要求是以UTF-8编码格式获取字符并转换为EUC-JP然后准备一些哈希(基于Groovy)jdk8。

在PHP中,类似的解决方案适用于我们并编码为,

$encodedToEucJp = mb_convert_encoding($inputStringWithUtf8, “EUC-JP”);
Print_r(md5($encodedToEucJp));

我们已经尝试了很多解决方案,例如,

Java.security.MessageDigest.getInstance(‘MD5’)
.digest(New String(inputStringWithUtf8.getBytes(“UTF-8”), “EUC-JP”)
.getBytes(“EUC-JP”))
.encodeHex()
.toString();

但是,这个解决方案失败了一些字符,然后从我们的PHP编码解决方案产生不同的摘要。这里提到几个字符 - ,ĭ,?这就是为什么我们不能在php和java系统中用相同的输入产生同样的摘要的原因。

提前致谢。

java groovy utf-8 character-encoding japanese
1个回答
0
投票

错误出现在代码的这一部分:

New String(inputStringWithUtf8.getBytes(“UTF-8”), “EUC-JP”)

基本上,您尝试将UTF-8字节数组解释为在EUC-JP中编码,这是无意义的。

以下代码应该完成这项工作

    Java.security.MessageDigest.getInstance(‘MD5’)
            .digest(inputStringWithUtf8.getBytes(“EUC-JP”))
            .encodeHex()
            .toString();
© www.soinside.com 2019 - 2024. All rights reserved.