我試圖讀取ISO-8859(ANSI)編碼的文件,它包含一些西歐字符,如「é」 。
當我嘗試讀取文件並輸出結果時,所有特殊字符顯示爲whereas,而正常字母顯示正確。
如果我將文件轉換爲utf-8格式,然後做同樣的工作,一切都完美。
有沒有人有任何想法來解決這個問題?我試圖用wifstream和wstring的的代替ifstream的和串但並沒有多大幫助。閱讀ISO-8859類型文件包含特殊字符,如é在C + +
這裏是我的示例代碼:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream myFS;
myFS.open("test.txt", ios::in);
string myString;
if(myFS.is_open()){
while(myFS >> myString)
cout << myString << endl;
}
myFS.close();
return 0;
}
的test.txt(ISO-8859-15格式)包含:
abcd éfg
結果:
abcd
�fg
任何意見可以理解的。 提前謝謝!
+)
忘了說我的系統環境。
我使用ubuntu 10.10(Maverick)console with g ++ ver 4.4.5
謝謝!
這可能是控制檯輸出的問題。請告知有關您的環境的詳細信息 – CharlesB 2012-01-29 13:13:15
剛剛添加了我的系統環境。它是Ubuntu 10.10 w/g ++ 4.4.5 – devEvan 2012-01-29 13:19:44