我无法在安卓中将字符串转换为UTF-8编码,请帮助我!
s1=URLEncoder.encode("臺北市")
结果: %EF%BF%BDO%EF%BF%BD_%EF%BF%BD%EF%BF%BD
但是"臺北市
"应该被编码为"%E8%87%BA%E5%8C%97%E5%B8%82
"
public class StringFormatter {
// convert UTF-8 to internal Java String format
public static String convertUTF8ToString(String s) {
String out = null;
try {
out = new String(s.getBytes("ISO-8859-1"), "UTF-8");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
// convert internal Java String format to UTF-8
public static String convertStringToUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("UTF-8"), "ISO-8859-1");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
}
您可以使用StringFormatter类将字符串转换为您的代码。
您想要转换为UTF-8:
String normal="This normal string".
String utf=StringFormatter.convertStringToUTF8(normal);
您想将UTF-8转换为普通格式:
String normal=StringFormatter.convertUTF8ToString(normal);
static String encode(String s, String charsetName)
方法。URLEncoder.encode("臺北市", "utf-8")
可以完成这项任务。"臺北市".getBytes("utf-8")
,然后将每个非ASCII字母数字字节转换为其"%XX"
十六进制表示形式即可。 - Remy Lebeau您可以直接使用以下代码:
URLEncoder.encode(string, "UTF-8");
string.replace(" ", "%20");
string.replace(" ", "%20");
这一部分。这应该是最佳答案。 - hadi使用这个:
URLEncoder.encode("臺北市", "UTF-8");
URLEncoder.encode()
的作用完全不同(尽管你的第一个例子是针对所问问题的正确答案)。 - Remy Lebeau