我们需要为我们的服务之一进行字符编码转换,我们的要求是以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系统中用相同的输入产生同样的摘要的原因。
提前谢谢。
答案 0 :(得分:0)
错误出现在代码的这一部分:
==
基本上,您尝试将UTF-8字节数组解释为在EUC-JP中编码,这是无意义的。
以下代码应该完成这项工作
New String(inputStringWithUtf8.getBytes(“UTF-8”), “EUC-JP”)