java - 将字符串转换为十六进制的字符集是什么?

标签 java string hex

我使用此代码将字符串转换为十六进制值:

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/

相关文章:

java - Java 中使用递归解决迷宫

java - 将 Angular 4 与 Struts 2 集成

c - Strncpy(字符串C编程)第二次表现不佳

c++ - 修复了 g++ 4.9.1 奇怪的 "%a"格式行为?

java - 如何使这段代码不打印负值?

java - 从Java中的for循环内部返回的正确方法?

java - 在Java中使用Unicode正则表达式来匹配任何Unicode字符

java - 我需要将一个对象转换为字符串,然后通过将其转换回我的对象​​来检索它

swift - 对字符串进行排序以确定它是 Swift Xcode 中的 Anagram 还是 Palindrome

c++ - Arduino 字符数组到整数值