相关疑难解决方法(0)

如何从Windows上的c ++控制台应用程序打印UTF-8

对于在英语Windows(XP,Vista或7)上使用Visual Studio 2008编译的C++控制台应用程序.是否可以打印到控制台并使用cout或wcout正确显示UTF-8编码的日语?

c++ utf-8 console-application

19
推荐指数
4
解决办法
3万
查看次数

在C#console应用程序中显示阿拉伯字符

我相信自从Windows ME诞生以来,13年多以前可以在控制台应用程序上显示阿拉伯字符.

现在我使用的是Visual Studio 2013,在Windows 8上,以下代码显示:

????? ??

   Console.OutputEncoding = System.Text.Encoding.Unicode;
   Console.WriteLine("????? ??");
Run Code Online (Sandbox Code Playgroud)

无论如何在控制台输出中显示阿拉伯字符?

c# unicode arabic console-application

11
推荐指数
1
解决办法
2万
查看次数

Windows控制台上的UTF-8输出

以下代码显示了我的计算机上的意外行为(在Windows XP和Windows 7上的VS 2012上使用Visual C++ 2008 SP1进行了测试):

#include <iostream>
#include "Windows.h"

int main() {
    SetConsoleOutputCP( CP_UTF8 );
    std::cout << "\xc3\xbc";
    int fail = std::cout.fail() ? '1': '0';
    fputc( fail, stdout );
    fputs( "\xc3\xbc", stdout );
}
Run Code Online (Sandbox Code Playgroud)

我简单编译了cl /EHsc test.cpp.

Windows XP:控制台窗口中的输出 ü0ü(转换为代码页1252,最初显示默认代码页中的一些线条图,可能是437).当我更改控制台窗口的设置以使用"Lucida Console"字符集并再次运行我的test.exe时,输出更改为,这意味着

  • ü可以使用fputsUTF-8编码来编写字符C3 BC
  • std::cout 因任何原因都不起作用
  • failbit尝试写字符后,流设置

Windows 7:使用Consolas输出??0ü.更有趣.可能写入正确的字节(至少在将输出重定向到文件时)并且流状态正常,但这两个字节被写为单独的字符).

我试图在"Microsoft Connect"(见这里)上提出这个问题,但是MS并没有太大的帮助.你可以在这里看一下 以前曾经问过类似的东西.

你能重现这个问题吗?

我究竟做错了什么?不应该std::coutfputs有相同的效果?

解决:(排序)继mike.dld的想法,我实现了一个std::stringbuf …

c++ console windows-xp utf-8 visual-studio-2008

7
推荐指数
2
解决办法
4965
查看次数