惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cloudbric
Cloudbric
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
美团技术团队
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
博客园 - Franky
罗磊的独立博客
雷峰网
雷峰网
F
Fortinet All Blogs
Stack Overflow Blog
Stack Overflow Blog
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
H
Help Net Security
Vercel News
Vercel News
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
量子位
F
Full Disclosure
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
WordPress大学
WordPress大学
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
D
Docker
T
Tailwind CSS Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
GbyAI
GbyAI
Y
Y Combinator Blog
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
Recent Announcements
Recent Announcements
V
Visual Studio Blog
The Cloudflare Blog
P
Proofpoint News Feed

博客园 - Kevin Zou

vs2008 ctrl+D 查找出错 No files were found to look in. Error while trying to retrieve text for error ORA-03113 的一种解决方式 IE不能直接顯示PDF的原因分析和解決方法 [2012-01-06] 流程系统设计--消息和通知 企业应用整合(1)--一个账号 2010年终随笔--漫谈技术 Schtasks命令理解排程的應用 用Adobe ImageReady制作简单GIF动画 JQuery1.4+ Ajax IE8 内存泄漏 权限设计的三层境界续 闲话权限设计三层境界 - Kevin Zou - 博客园 一个时代的终结 Jquery乱码的一次解决过程 asp.net真的是并行处理request的吗? 十年磨一剑—序 十年磨一剑--缓存模块设计 系统设计其实很有趣--从业务逻辑谈起 系统架构随笔--我看三层架构的数据访问层"怪胎"
Console输出UTF-8
Kevin Zou · 2010-10-20 · via 博客园 - Kevin Zou

用控制台写一些简单的程式,是一个很不错的选择。

不过windows下的console,却输出不了utf-8格式的文字,通过网友和自己尝试,有以下方法

第一种

繁体操作系统,chcp为950

C#写的Console程式运行起来时,显示不了简体字?Console.WriteLine(不过可以输入简体字Console.ReadLine)

image

找遍网络,发现了一种还算行的解决方法

a.改变当前字符集为65001(utf8)

image

b.设定字型

image

c.界面会乱掉,不过还是可以正常运行

image

d.最小化一下cmd窗口,然后再回来,即可看得到已还原的正常界面

image

第二种

英文操作系统,chcp为437,直接chcp 950报错(原因不明)

image

chcp 65001,然后修改字体后也不行,显示一些方块

1.于是只好先改注册表,先改为950

image

image

2.重新打开cmd,chcp后发现是950

然后修改字体,这时候可以显示汉字了

然后再chcp 65001(记得一定是先修改console的font,然后再chcp)

这样就可以正常运行console的输出简体字和繁体字的程式了

image

好了,到此为止

下面再看一个没有作过任何修改的chcp950的cmd

发现dir命令可同时显示简繁体的文件名

image

可type命令也显示含有简体字的文本文件内容,不过该文件必须以unicode格式存储,utf-8格式存储则会显示乱码

 image

说明控制台确实可以在不改变任何设定的情况下输出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排定的工作中运行,则需要设定以下键值