URLEncoder - PC <> Android

  • Hallo,
    Ich arbeite an einem Programm für Java (PC) und Android.
    Ich nutze die Klasse URLEncoder nachdem ich einen String mit Base64 encodiert habe so:


    PC:

    Code
    public static String encBase64Url(String s) {
    		try {
    	            return  URLEncoder.encode(Base64.getEncoder().encodeToString(s.getBytes("UTF-8")), "UTF-8");
    		} catch (UnsupportedEncodingException e) {
    			System.err.println("Error: " + e.getMessage());	
    			return null;
    		}
    	}


    Android:

    Code
    public static String encBase64Url(String s) {
    		try {
                        return URLEncoder.encode(Base64.encodeToString(s.getBytes("UTF-8"), Base64.DEFAULT), "UTF-8");
    		} catch (UnsupportedEncodingException e) {
    			return null;
    		}
    	}


    Das Problem ist nur, dass bei gleicher Eingabe nicht das selbe zurück gegeben wird.


    z.B.:


    Eingabe:
    "oinawdinaifiurb"


    Ausgaben:
    PC:
    "b2luYXdkaW5haWZpdXJi"
    Android:
    "b2luYXdkaW5haWZpdXJi%0A"


    Bei Android hängt da noch "%0A" mit drann, was am PC nicht der Fall ist. Wie kann man das beheben?

  • Ich habe eine Notlösung, bin aber nicht sicher, ob das immer funktioniert:


    Bei Android die Methode so abändern:


    Code
    public static String encBase64Url(String s) {
            try {
                return URLEncoder.encode(Base64.encodeToString(s.getBytes("UTF-8"), Base64.DEFAULT).replace("\n", ""), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                return null;
            }
        }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!