3

アプリでアクセント付きの文字が正しく表示されません。私は昨年これを調べましたが、解決策を見つけることができませんでした。私は掘り下げてきましたが、まだ解決策を見つけていません。ボタンがクリックされたときに WebView に読み込まれる EditText フィールドにユーザーが「London Château」と入力するとどうなるかを示すスクリーン ショットを提供しました。アクセント付き文字 "â" が期待どおりに変換されません。それは「Ãç」、「ロンドンのシャトー」に翻訳されます。解決策を知りたいです、よろしくお願いします。

デモ用のコードを提供しました:

public class MainActivity extends Activity {

private WebView webView;
private EditText edittext_1;
private Button buttonUpdate;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView = (WebView) findViewById(R.id.webview_summary);
    webView.getSettings().setJavaScriptEnabled(true);

    edittext_1 = (EditText) findViewById(R.id.editText_1);
    buttonUpdate = (Button) findViewById(R.id.button_update);

    buttonUpdate.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String s = edittext_1.getText().toString();
            webView.loadData(s, "text/html", "utf-8");
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
}

xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<WebView
    android:id="@+id/webview_summary"
    android:layout_width="fill_parent"
    android:layout_height="0px"
    android:layout_weight=".85" />

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="0px"
    android:layout_weight=".15" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <EditText
            android:id="@+id/editText_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:hint="text"
            android:minWidth="100dp"
            android:text="" />

        <Button
            android:id="@+id/button_update"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/editText_1"
            android:padding="10dp" />
    </RelativeLayout>
</LinearLayout>

</LinearLayout>
4

2 に答える 2

15

投稿するとすぐに、うまくいく提案を見つけました。次の行を次のように変更しました。

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

に:

webView.loadDataWithBaseURL(null, s, "text/html", "utf-8", null);
于 2012-11-08T12:47:36.777 に答える
0

から s を取得しようとするHtml.fromHtml

String s = Html.fromHtml(edittext_1.getText().toString()).toString();
于 2012-11-08T12:41:33.983 に答える