enter在system()之后被转换成乱码
Enter is converted to gibberish code after system()
当我使用 C++ 调用 Python 程序输出时(通过带参数的系统命令),它在行尾输出乱码。之后,我无法输入任何字符(包括退格和回车),它显示一个空心方块。
控制台屏幕截图:https://user-images.githubusercontent.com/53416099/162125240-8d736a41-2e11-4d9c-a873-1257d3585cd7.png(我不能 post 图片)
整个函数代码:(使用文件处理)
string info;
cin >> info;
info = "TRANS -i \"" + info + "\" > WCH_TRANS.tmp";
system(info.c_str());
cmd_line = false;
Sleep(2000);
fin >> info;
cout << info << endl;
DeleteFile("WCH_TRANS.tmp");
我写过一个类似的函数,但是没有显示乱码。
你能试试UTF-8吗?
也许 python 的性格与 cpp 不同。
经过反复检查,我发现调用system()
后会导致这些编码问题。
您可以像这样将函数的输出重定向到临时文件。
void WCH_RunSystem(string str) {
// Run system command.
freopen("WCH_SYSTEM.tmp", "w", stdout);
system(str.c_str());
freopen("CON", "w", stdout);
Sleep(500);
DeleteFile("WCH_SYSTEM.tmp");
}
当我使用 C++ 调用 Python 程序输出时(通过带参数的系统命令),它在行尾输出乱码。之后,我无法输入任何字符(包括退格和回车),它显示一个空心方块。
控制台屏幕截图:https://user-images.githubusercontent.com/53416099/162125240-8d736a41-2e11-4d9c-a873-1257d3585cd7.png(我不能 post 图片)
整个函数代码:(使用文件处理)
string info;
cin >> info;
info = "TRANS -i \"" + info + "\" > WCH_TRANS.tmp";
system(info.c_str());
cmd_line = false;
Sleep(2000);
fin >> info;
cout << info << endl;
DeleteFile("WCH_TRANS.tmp");
我写过一个类似的函数,但是没有显示乱码。
你能试试UTF-8吗? 也许 python 的性格与 cpp 不同。
经过反复检查,我发现调用system()
后会导致这些编码问题。
您可以像这样将函数的输出重定向到临时文件。
void WCH_RunSystem(string str) {
// Run system command.
freopen("WCH_SYSTEM.tmp", "w", stdout);
system(str.c_str());
freopen("CON", "w", stdout);
Sleep(500);
DeleteFile("WCH_SYSTEM.tmp");
}