【问题标题】:Console.WriteLine((char) 146) appears as "?" [duplicate]Console.WriteLine((char) 146) 显示为“?” [复制]
【发布时间】:2013-10-24 16:09:03
【问题描述】:

我尝试使用Console.WriteLine((char) 146); 打印此字符,但它打印了?。当我设置Console.OutputEncoding = System.Text.Encoding.UTF8 时,它打印了一些有问题的字符,而不是我需要的。

【问题讨论】:

  • 您可能无法以这种方式以编程方式更改控制台编码。 Windows 控制台通常对 Unicode 无用。
  • 你希望打印什么?
  • 您是否考虑过将控制台字体更改为具有该字符字形的字体?
  • @user2886646 我的解决方案现在对你有用吗,因为它仍然没有签名作为回答?
  • 猜猜它有效,但由于某种原因,您不会将其标记为已回答...

标签: c# .net encoding console-application


【解决方案1】:

你试过了吗?

static void Main(string[] args)
    {
        Console.WriteLine((char)39);
    }

至少这对我有用。

【讨论】:

  • 如果我添加 Console.OutputEncoding = Encoding.UTF8; 它不会改变之前。
  • 你确定它打印的是acute accent (’)而不是apostrophe (')吗?可能你把它们混在一起了。
  • 是的,你是对的。好像我把它们混在一起了。对不起! ;)
【解决方案2】:

您需要的代码是 8217。

但您还必须启用 UTF8 编码并将字体更改为可以显示 UTF8 字符的字体:

        Console.OutputEncoding = Encoding.UTF8;

        int value = '’';

        Console.WriteLine((char)value);

        Console.ReadLine();

如果您当前的控制台字体不支持此字符,您可能还需要更改它。

怎么样? 启动控制台后,右键单击标题栏 -> 属性 -> 字体 -> Lucida 控制台

瞧,它起作用了!

【讨论】:

  • 打印ASCII表需要什么编码?
  • 可能是System.Text.Encoding.ASCII?
  • 当我用(char)36 尝试这个时,我得到$
  • 我也可以用 (char)36 得到 $,但我仍然得到 "?"尝试打印 (char)146 时
  • OP 的字符不是反引号,而是高九的单引号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
相关资源
最近更新 更多