visual-studio - 如何在 Visual Studio 15 控制台应用程序中使用方框绘制高 ASCII 字符?

标签 visual-studio drawing box codepages extended-ascii

我有一个 Win32 控制台应用程序,可以在 CMD 窗口中玩游戏。

我想使用一些标准的方框绘图字符在字段周围绘制一个方框,例如:(186: ║), (187: ╗) (188: ╝), (200: ╚), (201: ╔), (205: ═) 但我什么也做不了。

首先,在构建过程中,我收到警告,例如:“警告 C4566:当前代码页 (1252) 中无法表示由通用字符名称 '\u2551' 表示的字符”

代码将运行,但它会显示其他内容来代替方框绘图字符。我查看了尽可能多的属性,但没有找到任何可以更改当前代码页的地方。

关于如何以及在何处更改它的任何想法?或者这是我需要在 Windows 中更改的内容吗?如果重要的话,我正在运行 Win 7 Pro。

我确实将 VS 编辑器的代码页更改为 850(西欧 DOS),但这对可执行文件没有影响。

最佳答案

Nota Bene:“高 ASCII”和 不够具体,没有意义。 (请停止使用这些术语。)

最后一件事:您的控制台必须选择支持您要使用的编码和字符的字体。自 1981 年以来,这对于方框绘图字符应该不是问题。但是您可以通过检查控制台设置并使用 charmap 来检查。

最好不要乱用默认的 C# 源文件编码。 UTF-8 很棒。

接下来,将您要在源代码中使用的字符用作文字 UTF-16 代码单元。因此,“║”而不是 186——但如果必须的话,可以使用“\u2551”。它使代码更易于阅读。

Console.OutputEncoding最好将 UTF-8 用于输出,除非它不受支持或难以使用。

如果可以,请使用 chcp 65001 命令将控制台编码更改为 UTF-8。如果不能,请返回并将您的 Console.OutputEncoding 更改为您的控制台正在使用的任何内容(例如代码页 437)。


这是一个例子:

class Program
{
    static void Main(string[] args)
    {
        var codePage = Console.OutputEncoding.CodePage.ToString();
        var length = codePage.Length;
        Console.WriteLine($"╔{new String('═', length)}╗");
        Console.WriteLine($"║{codePage}║");
        Console.WriteLine($"╚{new String('═', length)}╝");
    }
}

在我在 cmd.exe 中执行 chcp 65001 之后,它显示了这个:

╔═════╗
║65001║
╚═════╝

如果我不先执行 chcp 就运行它:

╔═══╗
║437║
╚═══╝

然后,在我在 cmd.exe 中执行 chcp 850 之后:

╔═══╗
║850║
╚═══╝

关于visual-studio - 如何在 Visual Studio 15 控制台应用程序中使用方框绘制高 ASCII 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40787855/

相关文章:

css - 我怎样才能使 flex box 以垂直流工作?

c# - 如何为多部分表单数据及其值形成WebRequest?

c# - Windows 窗体 C# 面板不应有白色背景,并且面板应仅为图像

javascript - 如何在 Visual Studio 2010 中对文件系统更改运行命令?

ios - 平滑手绘的自由形状

ios - 删除绘图并捕获 UIView 绘图的屏幕截图无法正常工作

java - 盒子 API Java : How can I move a file into another folder?

c# - Web 部署代理服务返回 500 内部服务器错误

c# - 如何将文件夹作为图像数据库?

ios - 育儿时如何覆盖CALayers的绘图顺序