提问人:Sam 提问时间:4/22/2011 最后编辑:Peter O.Sam 更新时间:11/18/2020 访问量:185521
如何将Unicode字符写入控制台?
How to write Unicode characters to the console?
答:
266赞
Paul Sasik
4/22/2011
#1
您的输出编码可能设置为 ASCII。在发送输出之前尝试使用它:
Console.OutputEncoding = System.Text.Encoding.UTF8;
(指向支持文档的 MSDN 链接。
这里有一个小小的控制台测试应用程序,你可能会发现很方便:
C#
using System;
using System.Text;
public static class ConsoleOutputTest {
public static void Main() {
Console.OutputEncoding = System.Text.Encoding.UTF8;
for (var i = 0; i <= 1000; i++) {
Console.Write(Strings.ChrW(i));
if (i % 50 == 0) { // break every 50 chars
Console.WriteLine();
}
}
Console.ReadKey();
}
}
VB.NET
imports Microsoft.VisualBasic
imports System
public module ConsoleOutputTest
Sub Main()
Console.OutputEncoding = System.Text.Encoding.UTF8
dim i as integer
for i = 0 to 1000
Console.Write(ChrW(i))
if i mod 50 = 0 'break every 50 chars
Console.WriteLine()
end if
next
Console.ReadKey()
End Sub
end module
您选择的控制台字体也可能不支持该特定字符。单击 Windows 工具栏菜单(图标类似于 C:.),然后选择“属性”-“>字体”。尝试一些其他字体,看看它们是否能正确显示你的角色:
评论
3赞
Saeb Amini
1/11/2012
Console.OutputEncoding
不能设置为 (UTF-16)。但是,这是可能的。Encoding.Unicode
Encoding.UTF8
3赞
Sami Kuhmonen
12/12/2013
在 .NET 4.5 及更高版本中,还支持 UTF-16
6赞
Quincy
1/29/2015
嗯,这对我不起作用。我正在尝试打印印地语或韩语,但没有运气
1赞
Mike Keskinov
2/18/2015
您可能需要重新启动应用程序才能在字体之间切换后查看效果。
2赞
kjhughes
5/4/2018
@Cel:我发现NSimSun适用于中文和日文(以及英文)。
13赞
Pažout
4/9/2014
#2
Console.OutputEncoding 属性
https://learn.microsoft.com/en-us/dotnet/api/system.console.outputencoding
请注意,要成功向控制台显示 Unicode 字符,需要满足以下条件:
- 控制台必须使用 TrueType 字体(如 Lucida Console 或 Consolas)来显示字符。
14赞
Destiner
9/14/2014
#3
我在MSDN上找到了一些优雅的解决方案
System.Console.Write('\uXXXX') //XXXX is hex Unicode for character
这个简单的程序直接在屏幕上写入°C。
using System;
public class Test
{
public static void Main()
{
Console.Write('\u2103'); //℃ character code
}
}
评论
2赞
Sam
3/10/2015
这真是太整洁了!但是,我认为公认的答案仍然适用 - 如果控制台使用的字体不支持 unicode 字符,我相信这个例子将不起作用。但是,我无法检查这一点,因为我目前无法访问 Windows 计算机。
0赞
Veverke
9/21/2015
是的,我相信山姆是对的。例如,我被困在命令提示符字体不支持我的字符集这一事实中。
0赞
Su Llewellyn
6/2/2023
这个答案最适合我所做的大多数事情——我让控制台默认为其字体,并使用将输出类型设置为 UTF8 的技巧(显示在接受的答案中)。
13赞
watbywbarif
1/23/2019
#4
此外Console.OutputEncoding = System.Text.Encoding.UTF8;
对于某些字符,您需要安装额外的字体(即。中文)。
在 Windows 10 中,首先转到“区域和语言设置”,然后安装对所需语言的支持:
之后,您可以转到命令提示符程序(或默认值,如果您愿意)并选择一些支持您的语言的字体(例如中文大小写的 KaiTi):
评论
0赞
Franva
3/10/2020
多谢。更改控制台字体是我的解决方法:)(同时将控制台输出设置为使用 UTF-8)
1赞
თემო ნემსიწვერიძე
3/11/2020
#5
这对我有用:
Console.OutputEncoding = System.Text.Encoding.Default;
要显示某些符号,需要将命令提示符的字体设置为 Lucida 控制台:
打开命令提示符;
右键单击命令提示符的顶部栏;
单击“属性”;
如果字体设置为“光栅字体”,请将其更改为“Lucida 控制台”。
评论