我使用此代码将字符串转换为十六进制值:
public static String toHex(String arg) throws UnsupportedEncodingException {
return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
}
代码似乎工作正常,但我不明白评论
/*YOUR_CHARSET?*/
我应该在那里放什么?
最佳答案
The code seems to work fine but I don't understand the comment /YOUR_CHARSET?/ ? Am I supposed to put there?
方法String#getBytes()
通过使用平台的默认字符集对其进行编码,将String
转换为字节数组
。调用 String#getBytes()
是有风险的,因为它会使您的代码依赖于平台,如果您更改平台,可能会在以后导致解码问题,这就是为什么强烈建议使用 String #getBytes(charset)
为了清楚地指定目标字符集,无论使用什么平台,它都可以正常工作假设指定的字符集可以正确覆盖的所有字符>要编码的字符串
。事实上,如果您的 String
中有重音字符,并且您使用不匹配的字符集(例如 ASCII
),您稍后会遇到解码问题。
关于java - 将字符串转换为十六进制的字符集是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39832368/