我正在尝试将Windows文件CP1252格式转换为UTF-8格式,以便在C ++应用程序中进行解析。 我使用以下命令:
iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf
当我尝试使用以下命令在C ++应用程序中运行相同的命令时
system("iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf");
某些字符编码不正确。
例如。德语字符ü, ö, ä
编码为�
我理解运算符>
是一个shell功能,我认为在C ++操作中使用它会导致这种差异。
我也尝试使用popen("iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf", "r");
,但没有成功。
是否有其他方法可以在不使用C ++应用程序中的out.ldf
运算符的情况下将转换重定向到>
。
编辑:链接为重复的问题与此处提到的问题完全不同。
int main (int argc, char* argv[])
{
string FileName = "Invalid";
if (argc == 2) {
FileName = argv[1];
system("iconv -f CP1252 -t UTF-8" + FileName + "|dos2unix > out.ldf");
//system("iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf");
//do further parsing on file
}
else
cout << "ERROR:: invalid number of arguments"<< endl;
return 0;
}
//file.ldf -- windows file (CP1252 format)
physical_value, 0, 254, 0.5, -20, "�C";
//out.ldf -- after conversion using 'iconv' command on the command line
physical_value, 0, 254, 0.5, -20, "üC";
//out.ldf -- after conversion using the 'system' API
physical_value, 0, 254, 0.5, -20, "�C";