架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 25389|回复: 2

[.NET Core] .net core控制台中文字符乱码两种解决办法

[复制链接]
发表于 2017-5-17 14:44:09 | 显示全部楼层 |阅读模式
QQ截图20170517141812.jpg


.net core控制台程序的很简单,就是提示用户输入一个网址,然后,输入用户输入的网址,大家一看就明白,但是,中文字符乱码,

错误原因:

'GB2312' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name

上面的大概意思是Encoding 不支持GB2312编码,需要使用Encoding.RegisterProvider方法进行注册Provider。



怎么解决呢?

解决办法一:

设置控制台使用编码将由应用到相应的控制台显示字符的文字输出。默认代码页控制台使用的系统区域设置确定。

QQ截图20170517142658.jpg

解决办法二:

1:使用Encoding.RegisterProvider方法进行注册Provider

2:CodePagesEncodingProvider在包System.Text.Encoding.CodePages中

3:nuget执行命令:Install-Package System.Text.Encoding.CodePages

4:添加代码:


QQ截图20170517144343.jpg







上一篇:Centos安装.net core 环境教程
下一篇:在Linux/Centos上运行.net core控制台程序[源码]
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2017-5-17 14:46:57 | 显示全部楼层

小弟说下见解,控制台乱码的原因是因为中文windows命令行默认编码页是gb2312,想输出中文只要把控制台的编码页修改成Unicode就可以了。
在cmd里输入chcp 65001再运行程序或者在程序里加一行
Console.OutputEncoding = Encoding.Unicode;
网页乱码的原因也是因为程序没有指定编码默认使用Unicode,而中文环境浏览器默认使用gbk。可以通过设置ContentType来告诉浏览器使用utf8.
在await context.Response.WriteAsync("您好,北京欢迎你");前面加上:
context.Response.ContentType = "text/plain;charset=utf-8";
只是显示中文的话没有特殊需求的情况下并不需要引用System.Text.Encoding.CodePages
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-11-12 13:40:04 | 显示全部楼层
收藏备用
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-5-9 07:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表