我正在尝试读取一个使用ISO-8859(ANSI)编码的文件,其中包含一些西欧字符,例如“ é”。
当我尝试读取该文件并输出结果时,所有特殊字符都显示为“ �”,而正常字母则正确显示。
如果我将文件转换为utf-8格式,然后再执行同样的操作,一切都能完美地工作。
有人有解决这个问题的想法吗?我尝试使用wifstream和wstring而不是 ifstream 和 string ,但效果不太好。
这是我的示例代码:
如果我将文件转换为utf-8格式,然后再执行同样的操作,一切都能完美地工作。
有人有解决这个问题的想法吗?我尝试使用wifstream和wstring而不是 ifstream 和 string ,但效果不太好。
这是我的示例代码:
#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
任何建议都将不胜感激。 提前致谢!
+)
忘了提到我的系统环境。
我正在使用带有g ++ ver 4.4.5的ubuntu 10.10(Maverick)控制台。
谢谢!