C#控制台输出中文显示乱码问题

问题:瑞典文字的“æ”在控制台中无法正确的显示?

String[] strings1 = { "case", "encyclopædia", "encyclopædia", "Archæology" };

程序运行后 显示效果如下:

C#控制台输出中文显示乱码问题

 

 我们通过在控制台的标题栏点击右键》属性,查看当前控制台显示所用的编码格式是:当前代码页936(ANSI/OEM-中文简体 GBK),它对应的是操作系统中,区域》语言管理设置》当前区域 如下图所示:

C#控制台输出中文显示乱码问题

 

 

 

 

C#控制台输出中文显示乱码问题

 

 

 当前代码页936(ANSI/OEM-中文简体 GBK)是什么意思呢?

 代码页:code page 简体中文的code page值为936,繁体中文的code page值为950(表示Big-5编码)

ANSI:实ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI表示不同的编码。你的美国同事Bob的系统中ANSI编码其实是ASCII编码(ASCII编码不能表示汉字,所以汉字为乱码),而你的系统中(“汉字”正常显示)ANSI编码其实是GBK编码

 详细:https://zhuanlan.zhihu.com/p/27136737

通过以上分析我们得出 :控制台显示编码格式是GBK 无法显示瑞典文字。所以我们要修改控制台的显示编码格式(InputEncoding)。

解决方案

在要输出中文的语句上加上这一行即可解决乱码问题

Console.OutputEncoding = System.Text.Encoding.Unicode;
Console.WriteLine("打印中文");

 

上一篇:性能优化利器:剖析MySQL 5.7新特征 sys schema


下一篇:Java IO流