转载: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 显示乱码相关推荐

  1. Windows 10英文系统解决中文乱码问题

    Windows 10英文系统解决中文乱码问题 打开control panel 点击Clock and Region 点击Change Location,并选择China 点击Region,在弹出窗口选 ...

  2. win10c 系统语言 英文,Win10英文版系统下中文软件显示为问号的解决方法

    RegEx Dotext 1.0 β4.exe是一个强大的处理文本的小软件,感谢软件制作者sunsmile.但是安装了Windows 10英文版后,打开RegEx Dotext 1.0 β4.exe ...

  3. linux文件乱码crt,Linux中文文件显示乱码或Secure CRT显示乱码解决方案

    Linux中文文件显示乱码或Secure CRT显示乱码解决方案 1.设置Secure CRT options->session options->appearance->fond( ...

  4. QML on Android 在小米5s手机上中文字体显示异常

    前言 随着Qt版本的不断升级,用QML开发Android移动端应用越来越方便,并且支持的功能也逐渐增多,不过由于Android机型实在太多,并且大部分Android系统都是由手机厂商深度定制过,然后在 ...

  5. git status或者 git commit 中文文件显示乱码

    1.美图 # 2.背景 对于上传的中文文件显示乱码,core.quotepath没有设置好 执行 git commit之后如下# Please enter the commit message for ...

  6. TIA西门子博途下载HMI程序后,画面中文字体显示乱码的处理对策

    TIA西门子博途下载HMI程序后,画面中文字体显示乱码的处理对策 大家在使用或更换精简屏或精智屏时可能会碰到,组态好的项目下载到HMI后,出现了中文字体显示乱码等异常情况,这时,我们需要注意字体的使用 ...

  7. 如何把Windows 7英文系统转换为中文系统

    如何把Windows 7英文系统转换为中文系统 Windows 7 Ultimate版才有多语言(MUI)支持,但是并非一定要MUI版本才能安装新语言.Windows 7虽然没有MUI的支持,但使用V ...

  8. vscode打开html中文乱码,Visual Studio Code 1.44 解决中文代码显示乱码问题(小白图文教程)...

    现今主流的计算机中文字符编码方案是:GBK和UTF-8. 不同编码方案使用不同的字符集,GBK字符集在中文字符长度和字符数量上存在绝对优势,但对国外字符并不支持.所以,完全面向国内的程序/网页使用的是 ...

  9. Flash读取XML文件出现的中文乱码问题 flash读取外部中文时显示乱码的问题

    Flash读取XML文件出现的中文乱码问题    原因:中文乱码,不用说都是编码惹的祸.Flash是使用UTF-8编码的.而一般我们保存文本文件时(也就是XML文件),用的编码是GB2321.ANSI ...

最新文章

  1. 19.C 语言与 C++在定义常量时有什么区别
  2. BIETLOLTP之概念熟悉
  3. 工业4.0时代,工业交换机在智能电网建设中有什么作用?
  4. Statement和PreparedStatement之间的区别(转)
  5. Failed to issue method call Unit mysql service failed to lo
  6. 问题8:NavigationController 自定义返回按钮I
  7. 修改oracle安装目录权限设置权限,oracle rac环境,安装目录权限被修改乱了,怎么恢复?...
  8. 数据结构上机实践第四周项目4 - 建设双链表算法库
  9. 小型微利企业税收筹划策略探析
  10. win7自带IE浏览器图标如何删除
  11. STM32c8t6串口+蓝牙控制PC13亮灭
  12. 国标PS流解包(解封装)代码
  13. 用最新版的Android Studio和Gradle把自己开发的Android包发布到JitPack上
  14. 【HBase调优】Hbase万亿级存储性能优化总结
  15. 【CRM】浅析奔驰汽车的客户关系管理
  16. java 读取网页 获取内容导入到本地生成word 网页转word
  17. How to encrypt and decrypt the Caesar Cipher with python(Ⅱ)
  18. AI王者荣耀(python+minitouch+scrcpy)Transformer
  19. 星淘惠:想在亚马逊做手工制品类目?一文告诉你申请流程
  20. uni-app中文字不换行的情况如何解决?

热门文章

  1. javascript 连续滚动
  2. [转载] python实现一个简易的计算器
  3. 解决Nginx出现403 forbidden
  4. 初涉springboot(一)
  5. MySQL数据库篇之索引原理与慢查询优化之一
  6. cookie与session的比较
  7. zbb20170607 svn SVN服务器搭建和使用
  8. 【IE】IE对line-height 失效的的解决方案
  9. Android加密算法之AES加密和解密实现
  10. 安卓与IOS移动段浏览器视频与音频的问题与总结