我有一个约束:我无法在某个特殊存储空间中保存一些字符(例如&
和=
)。
问题是我有字符串(用户输入)包含这些不允许的特殊字符,我想将其保存到该存储空间。
我希望将此类字符串转换为另一个不包含这些特殊字符的字符串。
我仍希望能够在不产生歧义的情况下转换回原始字符串。
知道如何实现de / convert吗?感谢。
答案 0 :(得分:3)
将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法。
public static String stringToHex(String arg) {
return String.format("%x", new BigInteger(1, arg.getBytes(Charset.forName("UTF-8"))));
}
public static String hexToString(String arg) {
byte[] bytes = DatatypeConverter.parseHexBinary(arg);
return new String(bytes, Charset.forName("UTF-8"));
}
用法:
String h = stringToHex("Perera & Sons");
System.out.println(h);
System.out.println(hexToString(h));
输出
506572657261202620536f6e73
Perera&儿子
答案 1 :(得分:1)
已在评论中指出,但URL Encoding看起来像是要走的路。
在Java中完成简单的URLEncoder和URLDecoder
String encoded = URLEncoder.encode("My string &with& illegal = characters ", "UTF-8");
System.out.println("Encoded String:" + encoded);
String decoded = URLDecoder.decode(encoded, "UTF-8");
System.out.println("Decoded String:" + decoded);