簡體   English   中英

為什么我在Windows中將\\ r \\ r \\ n作為換行符而不是\\ r \\ n作為換行符char

[英]Why I get \r\r\n as newline instead of \r\n as newline char in Windows

我下面有readfile()java函數來讀取.htm文件

private String readfile(String inputDoc) throws IOException {
    FileInputStream fis = null;
    InputStreamReader isr = null;
    String text = null;
    //open input stream to file
    fis = new FileInputStream(inputDoc);
    isr = new InputStreamReader(fis, "UTF-8");
    StringBuffer buffer = new StringBuffer();
    int c;
    while( (c = isr.read()) != -1 ) {
        buffer.append((char)c);
    }
    text = buffer.toString();
    isr.close();
    return text;
}

這是輸入文檔的示例片段

<?xml version="1.0" encoding="utf-8"?><html>

<head>

由於某種原因,從readfile()返回的文本字符串為<?xml version="1.0" encoding="utf-8"?><html>\\r\\r\\n<head>

但我希望它是 <?xml version="1.0" encoding="utf-8"?><html>\\r\\n<head>

因為它是概述這里換行字符在windows \\ r \\ n

我在Windows 7的IntelliJ Idea中運行了上述功能(IDEA默認編碼設置為UTF-8)。

有誰知道為什么我從readfile(String inputDoc)函數換行換到這個奇怪的結果

編寫\\n ,為了可移植性,它在Windows上擴展為\\r\\n 這樣,無論在什么操作系統上運行,都可以得到正確的結果,而無需其他代碼:在Windows上為\\r\\n ,在Unix上僅為\\n 看起來您正在以二進制模式讀取輸入(在文本模式下,相同的擴展也相反發生:輸入中的任何\\r\\n都變成\\n ,因此您不必再擔心OS),因此您參見\\r 然后,當您編寫\\n ,它將擴展為\\r\\n ,剩下兩個\\r

之所以會這樣,是因為在輸入文件中是這樣的。 嘗試在十六進制編輯器中打開輸入文件以進行驗證。

暫無
暫無

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

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