C# 英文系统上中文 string 显示乱码
转载:https://www.cnblogs.com/dhqy/p/13043089.html
C# 英文系统上中文 string 显示乱码
1. 问题现象:用 log4net 记录异常信息 Exception e 的 e.Message(string 类型) 在英文系统不能正常显示,显示为 ?????(中文系统能正常显示)。
简单起见,测试时直接用 log4net 输出中文 string(testStr = “中文乱码测试abc123”),测试 log 显示如下:
2. 问题分析:英文系统和中文系统的默认编码不一样,log4net 没有显式设置输出文件编码时使用了系统的默认编码,而英文系统的默认编码不支持中文显示。
3. 解决方案:
步骤一:log4net 配置中指定输出文件编码 appender.Encoding = Encoding.GetEncoding("gb2312") ,如下图所示:
步骤二:重新编译运行程序生成日志后,用 Notepad++ 打开日志文件,输出显示如下图所示( 依旧是乱码,不要慌,看下一个步骤):
步骤三:将 Notepad++ 的编码指定为 gb2312,如下图所示:
Notepad++ 指定编码 gb2312 后,即可正常显示中文,如下图所示:
注 1:控制台显示中文乱码,原因相同。解决方案如下:
打印输出前,显式指定控制台编码: Console.OutputEncoding = Encoding.GetEncoding("gb2312");
注 2:C# string 类的默认编码为 UTF-16(Unicode),官方文档参考:
https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/character-encoding-introduction#utf-16-code-units
注 3:数据要能正确显示主要涉及两个步骤:数据的编码与解码。
log4net 中的编码:配置中显式指定输出文件编码 appender.Encoding = Encoding.GetEncoding("gb2312");
控制台中的编码:因为 C# string 类默认编码为 UTF-16 是支持中文的,所以省略掉了。
log4net 中的解码:Notepad++ 设置编码为 gb2312。
控制台中的解码:Console.OutputEncoding = Encoding.GetEncoding("gb2312");
C# 英文系统上中文 string 显示乱码相关推荐
- Windows 10英文系统解决中文乱码问题
Windows 10英文系统解决中文乱码问题 打开control panel 点击Clock and Region 点击Change Location,并选择China 点击Region,在弹出窗口选 ...
- win10c 系统语言 英文,Win10英文版系统下中文软件显示为问号的解决方法
RegEx Dotext 1.0 β4.exe是一个强大的处理文本的小软件,感谢软件制作者sunsmile.但是安装了Windows 10英文版后,打开RegEx Dotext 1.0 β4.exe ...
- linux文件乱码crt,Linux中文文件显示乱码或Secure CRT显示乱码解决方案
Linux中文文件显示乱码或Secure CRT显示乱码解决方案 1.设置Secure CRT options->session options->appearance->fond( ...
- QML on Android 在小米5s手机上中文字体显示异常
前言 随着Qt版本的不断升级,用QML开发Android移动端应用越来越方便,并且支持的功能也逐渐增多,不过由于Android机型实在太多,并且大部分Android系统都是由手机厂商深度定制过,然后在 ...
- git status或者 git commit 中文文件显示乱码
1.美图 # 2.背景 对于上传的中文文件显示乱码,core.quotepath没有设置好 执行 git commit之后如下# Please enter the commit message for ...
- TIA西门子博途下载HMI程序后,画面中文字体显示乱码的处理对策
TIA西门子博途下载HMI程序后,画面中文字体显示乱码的处理对策 大家在使用或更换精简屏或精智屏时可能会碰到,组态好的项目下载到HMI后,出现了中文字体显示乱码等异常情况,这时,我们需要注意字体的使用 ...
- 如何把Windows 7英文系统转换为中文系统
如何把Windows 7英文系统转换为中文系统 Windows 7 Ultimate版才有多语言(MUI)支持,但是并非一定要MUI版本才能安装新语言.Windows 7虽然没有MUI的支持,但使用V ...
- vscode打开html中文乱码,Visual Studio Code 1.44 解决中文代码显示乱码问题(小白图文教程)...
现今主流的计算机中文字符编码方案是:GBK和UTF-8. 不同编码方案使用不同的字符集,GBK字符集在中文字符长度和字符数量上存在绝对优势,但对国外字符并不支持.所以,完全面向国内的程序/网页使用的是 ...
- Flash读取XML文件出现的中文乱码问题 flash读取外部中文时显示乱码的问题
Flash读取XML文件出现的中文乱码问题 原因:中文乱码,不用说都是编码惹的祸.Flash是使用UTF-8编码的.而一般我们保存文本文件时(也就是XML文件),用的编码是GB2321.ANSI ...
最新文章
- 19.C 语言与 C++在定义常量时有什么区别
- BIETLOLTP之概念熟悉
- 工业4.0时代,工业交换机在智能电网建设中有什么作用?
- Statement和PreparedStatement之间的区别(转)
- Failed to issue method call Unit mysql service failed to lo
- 问题8:NavigationController 自定义返回按钮I
- 修改oracle安装目录权限设置权限,oracle rac环境,安装目录权限被修改乱了,怎么恢复?...
- 数据结构上机实践第四周项目4 - 建设双链表算法库
- 小型微利企业税收筹划策略探析
- win7自带IE浏览器图标如何删除
- STM32c8t6串口+蓝牙控制PC13亮灭
- 国标PS流解包(解封装)代码
- 用最新版的Android Studio和Gradle把自己开发的Android包发布到JitPack上
- 【HBase调优】Hbase万亿级存储性能优化总结
- 【CRM】浅析奔驰汽车的客户关系管理
- java 读取网页 获取内容导入到本地生成word 网页转word
- How to encrypt and decrypt the Caesar Cipher with python(Ⅱ)
- AI王者荣耀(python+minitouch+scrcpy)Transformer
- 星淘惠:想在亚马逊做手工制品类目?一文告诉你申请流程
- uni-app中文字不换行的情况如何解决?