C ++中的波斯语字符utf8

时间:2017-05-26 11:33:05

标签: c++ unicode

我试图在c ++中读写波斯语字符,我想在CMD中显示它们 我修复的第一件事是Font我添加了Farsi Character,现在我可以在屏幕上写下例如ب(uni:$ 0​​628),代码如下:

$('.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)显示正确

提前致谢

1 个答案:

答案 0 :(得分:2)

解决方案如下:

wchar_t a=L'\u0628';

使用L告诉编译器你的类型char宽字符(&#34;大&#34;类型,我猜?至少那个& #39;我记得的方式)这可以确保该值不会被截断到8位 - 因此这可以按预期工作。

<强>更新

如果您在Windows中构建/运行此控制台应用程序,则需要相应地管理代码页。当我在wcincout调用之前设置正确的代码页时,以下代码在使用西里尔语输入(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;
}
相关问题