0

WindowsのJLabelでのエンコードに問題があります(* nix OSではすべて問題ありません)。ここに画像があります:http://i.imgur.com/DEkj3.png(問題のある文字は上に`が付いたLです、それはłでなければなりません)そしてここにコードがあります:

public void run()
    {
            URL url;
            HttpURLConnection conn;
            BufferedReader rd;
            String line;
            String result = "";
            try {
                url = new URL(URL);
                conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                while ((line = rd.readLine()) != null) {
                    result += line;
                }
                rd.close();
            } catch (Exception e) {
                try
                {
                    throw e;
                }
                catch (Exception e1)
                {
                    Window.news.setText("");
                }
            }
                Window.news.setText(result);
        }

私は試しましたが、役に立ちWindow.news.setText(new String(result.getBytes(), "UTF-8"));ませんでした。たぶん、指定されたJVMフラグを使用してアプリケーションを実行する必要がありますか?

4

1 に答える 1

3

new InputStreamReader明示的な文字セットなしで使用すると、ウィンドウに到達する前にデータが壊れています。これは、おそらくWindowsではcp1252であるプラットフォームのデフォルトの文字セットを使用するため、文字が壊れます。

読み取っているデータの文字セットがわかっている場合は、明示的に指定する必要があります。たとえば、次のようになります。

new InputStreamReader(conn.getInputStream(), "UTF-8")

ただし、任意の URL からデータをダウンロードする場合は、'Content-Type' ヘッダーの文字セットがあれば、それを優先する必要があります。

于 2013-01-17T19:29:58.263 に答える