簡體   English   中英

如何用UTF-8讀取InputStream?

[英]How to read a InputStream with UTF-8?

歡迎大家

我正在開發一個Java應用程序,它從Internet調用PHP,它給我一個XML響應。

在響應中包含這個詞:“Próximo”,但是當我解析XML的節點並獲得String變量的響應時,我收到的字樣如下:“Pró ximo”。

我確定問題是我在Java應用程序中使用不同的編碼然后編寫PHP腳本。 然后,我想我必須將編碼設置為與PHP xml,UTF-8相同

這是我用來從PHP中解析XML文件的代碼。

¿我應該在此代碼中更改什么來將編碼設置為UTF-8? (注意我沒有使用bufers閱讀器,我正在使用輸入流)

        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"); 

當你從你的InputStream讀取byte[] s時。 創建字符串時,傳入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)


@Amir Pashazadeh

是的,您也可以使用InputStreamReader,並嘗試將parse()行更改為:

Document doc = db.parse(new InputSource(new InputStreamReader(in, "UTF-8")));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM