8

すべてを歓迎する

私は、インターネットからPHPを呼び出してXML応答を返すJavaアプリを開発しています。

応答には「Próximo」という単語が含まれていますが、XMLのノードを解析して応答を文字列変数に取得すると、「Próximo」という単語が表示されます。

問題は、Javaアプリで使用しているエンコーディングとPHPスクリプトのエンコーディングを使用していることだと確信しています。次に、エンコーディングをPHP xml、UTF-8と同じに設定する必要があると思います

これは、PHPからXMLファイルを取得するために使用しているコードです。

¿エンコーディングをUTF-8に設定するには、このコードで何を変更する必要がありますか?(私はbuferedリーダーを使用していないことに注意してください、私は入力ストリームを使用しています)

        InputStream in = null;
        String url = "http://www.myurl.com"
        try {                              
            URL formattedUrl = new URL(url); 
            URLConnection connection = formattedUrl.openConnection();   
            HttpURLConnection httpConnection = (HttpURLConnection) connection;
            httpConnection.setAllowUserInteraction(false);
            httpConnection.setInstanceFollowRedirects(true);
            httpConnection.setRequestMethod("GET");
            httpConnection.connect();               
            if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
                in = httpConnection.getInputStream();   

            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();                     
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(in);
            doc.getDocumentElement().normalize();             
            NodeList myNodes = doc.getElementsByTagName("myNode"); 
4

1 に答える 1

9

あなたがそれからあなたのInputStream読みを得るときbyte[]。文字列を作成するときに、CharSet「UTF-8」を渡します。例:

byte[] buffer = new byte[contentLength];
int bytesRead = inputStream.read(buffer);
String page = new String(buffer, 0, bytesRead, "UTF-8");

おそらく、バッファを適切なサイズ(1024など)にして、継続的にと呼ばれるようにする必要があることに注意してくださいinputStream.read(buffer)


@アミールパシャザデ

はい、InputStreamReaderを使用して、parse()行を次のように変更することもできます。

Document doc = db.parse(new InputSource(new InputStreamReader(in, "UTF-8")));
于 2012-07-22T19:09:52.337 に答える