Java 如何将一个字符串转换为另一个字符串,以避免特定字符';输出中不允许使用?

Java 如何将一个字符串转换为另一个字符串,以避免特定字符';输出中不允许使用?,java,Java,我有一个限制:我不能将一些字符(如&和=)保存在某个特殊的存储器中 问题是,我有一些字符串(用户输入)包含这些不允许的特殊字符,我希望将其保存到该存储中 我想把这样的字符串转换成另一个不包含这些特殊字符的字符串 我希望仍然能够转换回原始字符串,而不会产生歧义 你知道如何实现反转换吗?谢谢。将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法 public static String stringToHex(String arg) { return String.for

我有一个限制:我不能将一些字符(如
&
=
)保存在某个特殊的存储器中

问题是,我有一些字符串(用户输入)包含这些不允许的特殊字符,我希望将其保存到该存储中

我想把这样的字符串转换成另一个不包含这些特殊字符的字符串

我希望仍然能够转换回原始字符串,而不会产生歧义


你知道如何实现反转换吗?谢谢。

将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法

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));
输出

5065727261202620536F6E73
佩雷拉父子公司


将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法

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));
输出

5065727261202620536F6E73
佩雷拉父子公司


已经在评论中指出了,但看起来是要走的路

在Java中,只需URL编码器和URL解码器即可

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);

评论中已经指出,但看起来是要走的路

在Java中,只需URL编码器和URL解码器即可

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);

使用URL编码?你能告诉我们这个特殊的存储是什么吗?某种将地图保存为字符串的适当方式,因此
&
=
@shmosel,如果不允许的字符与
&
不同,并且不是按照URL编码标准编码的,该怎么办?我不理解这个问题。你能更具体一点吗?使用URL编码吗?你能告诉我们这个特殊的存储是什么吗?一种将地图保存为字符串的适当方式,因此使用了
&
=
@shmosel,如果不允许的字符与
&
不同,并且不是按照URL编码标准编码的呢?我不理解这个问题。你能说得更具体些吗?如果不允许的字符不同于
&
,并且不是按照URL编码标准编码的呢?如果是这种情况,那么十六进制替代方案可能是更合适的解决方案。如果不允许的字符不同于
&
,并且不是按照URL编码标准编码的呢?如果是这样的话在这种情况下,十六进制替代方案可能是更合适的解决方案。