簡體   English   中英

為什么我在我的文件數據之前收到這些無效字符?

[英]Why am i getting these invalid characters before my file data?

在此處輸入圖片說明

我試圖通過getline函數或fileContents.assign( (istreambuf_iterator<char>(myFile)), (istreambuf_iterator<char>())); 無論哪種方式都給了我上面顯示的輸出圖像。

第一種方式:

 string fileContents;
 ifstream myFile("textFile.txt");
 while(getline(myFile,fileContents))
 cout<<fileContents<<endl;

替代方式:

 string fileContents;
 ifstream myFile(fileName.c_str());
 if (myFile.is_open())
  {
    fileContents.assign( (istreambuf_iterator<char>(myFile) ),
                       (istreambuf_iterator<char>()    ) );
    cout<<fileContents;
  }

該文件以這些字符開頭,很可能是一個BOM,用於告訴您文件的編碼是什么。

您可能無法在 Windows 記事本中看到它們,因為記事本隱藏了編碼字節。 獲得一個不錯的文本編輯器,它可以讓您查看文件的二進制文件,並且您將看到這些字符。

您的文件以 UTF-8 BOM 0xEF 0xBB 0xBF (字節0xEF 0xBB 0xBF )。 您正在按原樣讀取文件的原始字節,並將它們輸出到使用代碼頁 437的 OEM 字體的顯示器。 要正確處理文本文件,尤其是 Unicode 編碼的文本文件,您需要讀取前幾個字節,檢查 BOM( 您可以查找幾個),如果檢測到,則尋找 BOM 並解釋剩余的字節指定編碼的文件,在本例中為 UTF-8。

暫無
暫無

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

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