我试图在c ++中读写波斯语字符,我想在CMD中显示它们 我修复的第一件事是Font我添加了Farsi Character,现在我可以在屏幕上写下例如ب(uni:$ 0628),代码如下:
$('.datetimepicker').each(function(){
$(this).datetimepicker({
pickDate: false
});
});
但我如何保留这个角色...对于拉丁字符,我们可以使用pickDate: false
或#include <iostream>
#include <io.h>
#include <fcntl.h>
using namespace std;
int main() {
_setmode(_fileno(stdout), _O_U16TEXT);
wcout << L"\u0628 \n";
wcout << L"ب"<<endl;
system("pause");
}
但是波斯字符utf8怎么样?!
以及如何获取它们...对于我们使用{1}}或char
我应该使用string
吗?如果有,怎么样?
因为这个代码显示错误的字符...
cin>>
并且我无法显示此字符ب(uni $ FE91)即使存在于我安装的字体中但ب(uni $ 0628)显示正确
提前致谢
答案 0 :(得分:2)
解决方案如下:
wchar_t a=L'\u0628';
使用L
告诉编译器你的类型char
是宽字符(&#34;大&#34;类型,我猜?至少那个& #39;我记得的方式)这可以确保该值不会被截断到8位 - 因此这可以按预期工作。
<强>更新强>
如果您在Windows中构建/运行此控制台应用程序,则需要相应地管理代码页。当我在wcin
和cout
调用之前设置正确的代码页时,以下代码在使用西里尔语输入(Windows代码页1251)时适用于我,基本上位于main()
的最顶层:
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
对于波斯语,我希望你应该使用代码页1256。
完整的测试代码供您参考:
#include <iostream>
#include <Windows.h>
using namespace std;
void main()
{
SetConsoleOutputCP(1256); // to manage console output
SetConsoleCP(1256); // to properly process console input
wchar_t b;
wcin >> b;
wcout << b << endl;
}