How to convert String to utf-8 in android

I cannot convert String to UTF-8 in android. please help me!

s1=URLEncoder.encode("臺北市")

result: %EF%BF%BDO%EF%BF%BD_%EF%BF%BD%EF%BF%BD

But " 臺北市" must be encoded as " %E8%87%BA%E5%8C%97%E5%B8%82"

+6
source share
4 answers

In http://developer.android.com/reference/java/net/URLEncoder.html you can read that you used outdated and what you should usestatic String encode(String s, String charsetName)

So, I URLEncoder.encode("臺北市", "utf-8")have to do the trick.

+11
source

You can just use

URLEncoder.encode(string, "UTF-8");

This will encode your string: in UTF-8 format.

Put it in try / catch and check for IllegalArgumentException if you want. And if you have spaces in the string, replace it with

string.replace(" ", "%20");
+7
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;
    }

}

You can convert your string using the StringFormatter class to your code.

Do you want to convert to UTF-8:

String normal="This normal string".
String utf=StringFormatter.convertStringToUTF8(normal);

You want to convert UTF-8 to normal format:

String normal=StringFormatter.convertUTF8ToString(normal);
+7
source

use this:

        URLEncoder.encode("臺北市", "UTF-8");
+2
source

All Articles