4

我一直在努力使用 Visual Studio 在 Windows 中打印版权符号。我知道 0xA9 是版权符号的 ASCII 码,它适用于非 Windows 平台。但在 Windows 上,我无法使用相同的代码打印版权符号。

#include "iostream.h"
using namespace std;


int main(int argc, char * argv[])
{

        cout << (char)0xA9 << " Copyright symbol" << endl;

        return 0;
}

Linux/HP-UX 和 AIX 上的输出:© Copyright symbol

Windows 上的输出:⌐ Copyright symbol

我是 Windows 新手,谁能帮帮我。

4

4 回答 4

5
于 2013-03-22T06:41:10.207 回答
1

请注意,0xa9它不是ASCII(它有 7 位字符,仅限于0 - 0x7f范围)。它可以是ISO/IEC 8859-1。现在许多当前的系统(包括今天的大多数 Linux 终端)都使用UTF-8,其中版权字形由两个字节编码,因此您可以在 C 或 C++ 源代码"\302\251""\xc2\xa9"进行编码。所以你的程序不会在我xfce4-terminal使用 UTF-8 的 Linux 中显示版权标志。

一些 Windows 机器有不同的编码系统。

如果可能,我会将您的系统(无论是 Linux 还是 Windows)设置为在其终端上使用 UTF8字符编码(或使用 UTF16 宽字符)。到处阅读有关UTF-8 的信息。

ASCII 传统的版权调用非常普遍(C),因为 ASCII 编码没有任何版权字形。

于 2013-03-22T06:27:51.457 回答
0

这里获取和改编:

#if defined(WIN32)

#include <windows.h>

#endif

#include <stdio.h>

void print_copyright_hint() {
    printf("Copyright ");

#if defined(WIN32)
    auto copyright = const_cast<wchar_t *>(L"©");
    auto handle = GetStdHandle(STD_OUTPUT_HANDLE);
    WriteConsoleW(handle, copyright, static_cast<DWORD>(wcslen(copyright)), nullptr, nullptr);
#else
    printf("©");
#endif
    printf(" my Company");
}
于 2019-01-25T16:30:07.097 回答
-2

您可以使用 alt+0169。如果我错了,请原谅我。

于 2013-07-20T07:52:07.943 回答