0

ディープリンクを使用していますが、日本語の文字列を Web から Android に IntentFilter 経由で渡すときに問題が発生しました。いくつかのコードがあります:

Html コードで webview を初期化しています:

String encode = URLEncoder.encode("namhv://category?category_name=レビュー", "UTF-8");
    Log.e(TAG, "Url Encode: " + encode);
    Log.e(TAG, "Url Decode:" + URLDecoder.decode(encode, "UTF-8"));
    WebView webView = (WebView) findViewById(R.id.wv_content);
    webView.getSettings().setJavaScriptEnabled(true);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        WebView.setWebContentsDebuggingEnabled(true);
    }

    String html = "<html><body>\n" +
            "<br><a href=\"" + encode + "\">test go tab</a><br>" +
            "</body></html>";
    Log.e(TAG, html);
    webView.loadData(html, "text/html", "UTF-8");

ハンドルの意図:

public boolean handleDeepLinkEvent(Intent intent) throws UnsupportedEncodingException {
    if (intent.getData() != null) { //deep link
        String cateName = intent.getDataString();
        Log.e(TAG, cateName);
        Log.e(TAG, URLDecoder.decode(cateName, "UTF-8"));
        return true;

    }
    return false;
}

(1) 元の文字列: namhv://category?category_name=レビュー

(2) UTF8エンコード後の文字列: namhv%3A%2F%2Fcategory%3Fcategory_name%3D%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC

(3) インテント経由で受け取った文字列: namhv://category?category_name=%C3%A3%C6%92%C2%AC%C3%A3%C6%92%E2%80%9C%C3%A3%C6%92 %C2%A5%C3%A3%C6%92%C2%BC

(4) UTF8 でデコードした後の文字列: namhv://category?category_name=レビュー 私の予想では、(2) と (3) は同じで、(1) と (4) も同じです。しかし、IntentFilter を介して渡されたときに Android が文字列をどのように処理するかはわかりません。

4

1 に答える 1

0

この問題は、repleace によって解決されます

 webView.loadData(html, "text/html", "UTF-8");

webView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
于 2016-08-30T02:50:33.987 に答える