0

sqlite データベースから utf-8 でエンコードされた (スペイン語のテキスト) データをスクープし、それを webview に表示しようとしています。コードの重要な部分は次のとおりです。

String web_data_string = cursor.getString(0);
webview.loadData(web_data_string, "text/html", "utf-8");

文字列は、小文字の e+acute でなければならないものを除いて、すべての通常の文字を含む単語です。WebView では、すべての通常の文字が正しく表示されますが、e+acute は、A+チルダの後に著作権記号が続く 2 つの文字として表示されます。

どこで私は間違えましたか?

編集:動作させることができる解決策のためにdd619に+1しますが、他の言語でも、より多くの特殊文字が存在する可能性がある、より一般的な解決策を望んでいます。

4

3 に答える 3

1

ミックの答えは、次を使用して改善できますStringBuilder

private String utfEightToWeb(String str)
{
    StringBuilder stringBuilder = new StringBuilder();
    Character c;
    for (int i = 0; i<str.length(); i++) {
        c = str.charAt(i);
        if (c <= 127) {
            stringBuilder.append(str.charAt(i));
        } else {
            stringBuilder.append(String.format("&#%d;",(int)c));
        }
    }
    return stringBuilder.toString();
}
于 2013-12-09T06:41:26.277 に答える
1

特殊文字/文字がある場合は、それぞれのエスケープ文字シーケンスに置き換える必要があります。

この便利なリンクをご覧ください。

私はいくつかのスペイン語の文字で同じ問題を抱えていました。たとえばá、áをに置き換えることで解決しました\u00e1

e.g. if you want to print "Parámetros" then simply do.

String str="Parámetros";
str=str.replace("á","\u00e1");
Log.i("MyClass",str);

これで、データベース、Java、C++、または任意の Web プラットフォームで str を実行できます!

于 2013-09-25T11:25:14.957 に答える