web-dev-qa-db-ja.com

Android-androidで文字列をutf-8に変換する方法

Androidで文字列を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 "

7
林子洋

http://developer.Android.com/reference/Java/net/URLEncoder.html では、使用したものが非推奨であり、static String encode(String s, String charsetName)を使用する必要があることを確認できます。

したがって、URLEncoder.encode("臺北市", "utf-8")がトリックを行う必要があります。

13
sonic
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);
10
Paras Santoki

そのまま使用できますが、

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

これにより、「string:」がUTF-8形式でエンコードされます。

Try/catchに入れて、必要に応じてIllegalArgumentExceptionを確認してください。文字列にスペースがある場合は、次の文字列に置き換えてください

string.replace(" ", "%20");
8
Aritra Roy

これを使って:

        URLEncoder.encode("臺北市", "UTF-8");
2
Ahmad Sanie