用控制台写一些简单的程式,是一个很不错的选择。
不过windows下的console,却输出不了utf-8格式的文字,通过网友和自己尝试,有以下方法
第一种
繁体操作系统,chcp为950
C#写的Console程式运行起来时,显示不了简体字?Console.WriteLine(不过可以输入简体字Console.ReadLine)
找遍网络,发现了一种还算行的解决方法
a.改变当前字符集为65001(utf8)
b.设定字型
c.界面会乱掉,不过还是可以正常运行
d.最小化一下cmd窗口,然后再回来,即可看得到已还原的正常界面
第二种
英文操作系统,chcp为437,直接chcp 950报错(原因不明)
chcp 65001,然后修改字体后也不行,显示一些方块
1.于是只好先改注册表,先改为950
2.重新打开cmd,chcp后发现是950
然后修改字体,这时候可以显示汉字了
然后再chcp 65001(记得一定是先修改console的font,然后再chcp)
这样就可以正常运行console的输出简体字和繁体字的程式了
好了,到此为止
下面再看一个没有作过任何修改的chcp950的cmd
发现dir命令可同时显示简繁体的文件名
可type命令也显示含有简体字的文本文件内容,不过该文件必须以unicode格式存储,utf-8格式存储则会显示乱码
说明控制台确实可以在不改变任何设定的情况下输出unicode字符,即同时显示简体和繁体
type,dir命令是如何调用标准输出的?
是一个疑问
留待以后有空研究,看是否可以让C#的Console.WriteLine也具备此项功能
附一些关于windows默认字符集的看法:
1.windows系统有一个默认字符集,也叫内码页,在windows中此格式叫做ansi字符集
ansi字符集在不同的操作系统中对应的字符集也不一样
如
936(GB2312):简体操作系统
950(big5):繁体操作系统
437:英文操作系统
这个字符集兼容ASCII
并且扩展部分采用双字节
因此unicode和utf8是不行的
前者一般是两字节显示,后者则可能有三字节显示
windows关于默认字符集的设定是在
控制面板-->地区及语言选项—>Advanced-->选择非unicode的默认字符集(更改此选项,需要重启电脑)
至于为什么需要一个这样的设定,全世界都用unicode不行吗?
可能是因为:
GB2312,Big5格式的文本文件,完全没办法区分
因此windows在碰到此类文件时,需要有一个选项说明用何种字符集来读,这就是默认的内码页
当然,瀏覽器解析html可以根据meta标签的charset来选用,而不用默认字符集
xml的第一行也可以说明charset是什么
另外,如果是unicode(包括big endian),utf-8则有标志,即文本文件的开头有一些特殊的字节,用以说明现在的文件是什么格式的
2.windows系统本身应该使用的是unicode
如资料夹名称,文件名称既可以使用简体,也可以使用繁体
还有就是你写的程式,如果有字符串变量,这个字符串变量在exe中是以unicode存储的
UCS = Unicode Character Set = Unicode
UCS-2:表示Unicode 16,即用2个字节表示,65536个字符
UCS-4:则是Unicode 32,4个字节的完整unicode
2010.10.20 13:09 补录
如果是C#写的Console程式,并且要在windows排定的工作中运行,则需要设定以下键值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2008-10-20 安装VS2005的sp1补丁错误,未通过数字签名检查(轉)