如何用十六进制值替换 ASCII 文本
How to replace ASCII Text with Hex Value
我有一个字符串
msg = "Hello.. welcome. Your ID is 'abcd' & pwd is '123' !!";
我将空格替换为
msg = msg.replaceAll("\s+", "%20");
结果是
msg = "Hello..%20welcome.%20Your%20id%20is%20'abcd'%20&%20pwd%20is%20'123'!!
如何替换 ASCII 文本,例如 (&, ' , " , !) 等十六进制值。
这会产生类似
的字符串
msg = "Hello..%20welcome.%20Your%20id%20is%20%27abcd%27%20%26%20pwd%20is%20%27123%27%21%21
试试这个,
String query = URLEncoder.encode(msg, "utf-8").replace("+", "%20");
编辑
这是一个更好的方法。
String url = Uri.parse(msg)
.buildUpon()
.build()
.toString();
试试这个 class
public class EncodingDecodingUtil {
private final static String UTF_8 = "UTF-8";
private static final String TAG = EncodingDecodingUtil.class.getName();
/**
* This method Encode String to UTF -8
*
* @param stringToEncode
* @return return Decoded String Or Same String if exception
*/
public static String encodeString(String stringToEncode) {
String encodedString = null;
Logger.e("before encoding", stringToEncode);
try {
encodedString = java.net.URLEncoder.encode(stringToEncode, UTF_8).replace("+", "%20");
;
} catch (Exception e) {
Logger.e(TAG, "String encoding" + e);
}
if (encodedString == null) {
return stringToEncode;
}
Logger.e("after encoding", encodedString);
return encodedString;
}
/**
* This method decode String from UTF -8
*
* @param stringToEncode
* @return return Decoded String Or Same String if exception
*/
public static String decodeString(String stringToDecode) {
String decodedString = null;
try {
decodedString = java.net.URLDecoder.decode(stringToDecode, UTF_8);
} catch (Exception e) {
Logger.e(TAG, "String decoding" + e);
}
if (decodedString == null) {
return stringToDecode;
}
Logger.e("after decoding", decodedString);
return decodedString;
}
}
用法
String decodedMsg = EncodingDecodingUtil.decodeString(msg);
String encodedMsg = EncodingDecodingUtil.encodeString(msg);
我有一个字符串
msg = "Hello.. welcome. Your ID is 'abcd' & pwd is '123' !!";
我将空格替换为
msg = msg.replaceAll("\s+", "%20");
结果是
msg = "Hello..%20welcome.%20Your%20id%20is%20'abcd'%20&%20pwd%20is%20'123'!!
如何替换 ASCII 文本,例如 (&, ' , " , !) 等十六进制值。
这会产生类似
的字符串msg = "Hello..%20welcome.%20Your%20id%20is%20%27abcd%27%20%26%20pwd%20is%20%27123%27%21%21
试试这个,
String query = URLEncoder.encode(msg, "utf-8").replace("+", "%20");
编辑
这是一个更好的方法。
String url = Uri.parse(msg)
.buildUpon()
.build()
.toString();
试试这个 class
public class EncodingDecodingUtil {
private final static String UTF_8 = "UTF-8";
private static final String TAG = EncodingDecodingUtil.class.getName();
/**
* This method Encode String to UTF -8
*
* @param stringToEncode
* @return return Decoded String Or Same String if exception
*/
public static String encodeString(String stringToEncode) {
String encodedString = null;
Logger.e("before encoding", stringToEncode);
try {
encodedString = java.net.URLEncoder.encode(stringToEncode, UTF_8).replace("+", "%20");
;
} catch (Exception e) {
Logger.e(TAG, "String encoding" + e);
}
if (encodedString == null) {
return stringToEncode;
}
Logger.e("after encoding", encodedString);
return encodedString;
}
/**
* This method decode String from UTF -8
*
* @param stringToEncode
* @return return Decoded String Or Same String if exception
*/
public static String decodeString(String stringToDecode) {
String decodedString = null;
try {
decodedString = java.net.URLDecoder.decode(stringToDecode, UTF_8);
} catch (Exception e) {
Logger.e(TAG, "String decoding" + e);
}
if (decodedString == null) {
return stringToDecode;
}
Logger.e("after decoding", decodedString);
return decodedString;
}
}
用法
String decodedMsg = EncodingDecodingUtil.decodeString(msg);
String encodedMsg = EncodingDecodingUtil.encodeString(msg);