Je ne peux pas convertir une chaîne en UTF-8 sous Android. Aidez-moi, s'il vous plaît!!
s1=URLEncoder.encode("臺北市")
résultat: %EF%BF%BDO%EF%BF%BD_%EF%BF%BD%EF%BF%BD
Mais "臺北市
" devrait être codé comme "%E8%87%BA%E5%8C%97%E5%B8%82
"
Dans http://developer.Android.com/reference/Java/net/URLEncoder.html vous pouvez lire que celui que vous avez utilisé est obsolète et que vous devez utiliser static String encode(String s, String charsetName)
Donc URLEncoder.encode("臺北市", "utf-8")
devrait faire l'affaire.
Vous pouvez simplement utiliser,
URLEncoder.encode(string, "UTF-8");
Ceci encodera votre "chaîne: au format UTF-8.
Mettez-le dans un try/catch et vérifiez pour IllegalArgumentException si vous le souhaitez. Et si vous avez des espaces dans votre chaîne, veuillez le remplacer par
string.replace(" ", "%20");
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;
}
}
Vous pouvez convertir votre chaîne en utilisant la classe StringFormatter en votre code.
Vous voulez convertir en UTF-8:
String normal="This normal string".
String utf=StringFormatter.convertStringToUTF8(normal);
Vous voulez convertir UTF-8 au format normal:
String normal=StringFormatter.convertUTF8ToString(normal);
utilisez ceci:
URLEncoder.encode("臺北市", "UTF-8");