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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从UTF-8到EUC-JP的Groovy中的字符编码转换相关的知识,希望对你有一定的参考价值。

我们需要为我们的服务之一进行字符编码转换,我们的要求是以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系统中用相同的输入产生同样的摘要的原因。

提前致谢。

答案

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

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

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

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

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

以上是关于从UTF-8到EUC-JP的Groovy中的字符编码转换的主要内容,如果未能解决你的问题,请参考以下文章

如何从groovy中的多个字符串生成gstring?

BeautifulSoup 在从 utf-8 解码到 unicode 时遗漏了一些字母

令牌身份验证失败:“utf-8”编解码器无法解码位置 0 中的字节 0xe4:无效的继续字节

字符编码中ASCIIUnicode和UTF-8的区别

从文件中读取字符串并使用 Groovy 将它们放入数组中

从 Groovy 中的 URL 读取(使用重定向)