2

URIからソースを取得しようとしています。UTF-8として報告されています。ISO-8859-1、ISO-8859-1 Windows-1250、ISO-8859-2も試しました。

これが最新の試みの私のコードです(ISO-8859-2を試してみてください):

public static String getPage(String page,String charset) throws IOException{
        URL url=new URL(page);

        return org.apache.commons.io.IOUtils.toString(url.openConnection().getInputStream(),charset);
    }

    public static void main(String args[])throws Exception{
        String page=getPage("http://buscon.rae.es/drae/srv/search?val=aba","ISO-8859-2");
        System.out.println(page);
    }

しかし、結果は次のとおりです。

apÄ? ge'quita、aparta'、y estedelgr。á¼?Ï?αγε)

それ以外の:

(Dellat.apăge'quita、aparta'、y este delgr.ἄπαγε)。

同様に、UTF-8(他のコードやブラウザーで動作します)や他のエンコード名も同様に失敗します。

4

1 に答える 1

3

U + 0103(ă)はバイトシーケンスとしてエンコードされますC4 83; このデータはUTF-8です。

PrintStreamこのバグは、に添付されたを介して実行している他のトランスコーディング操作が原因である可能性がありますSystem.out。これにより、データがシステムエンコーディングにエンコードされます。これは、損失の多い変換であり、書き込み先のデバイスが一致するエンコーディングを使用していない場合、破損を引き起こす可能性があります。

ここで、Windowsコンソールに関するこれの分析を読むことができます。

于 2012-08-08T11:26:39.870 に答える