黑马程序员技术交流社区

标题: c#打开以前编写的程序中文是乱码? [打印本页]

作者: 硬别    时间: 2013-10-7 14:19
标题: c#打开以前编写的程序中文是乱码?
本帖最后由 硬别 于 2013-10-14 16:26 编辑

以前做入学测试写出来的程序,里面包含了中文,但是今天打开的时候发现是乱码,求解答?

作者: 我一直在等待    时间: 2013-10-7 14:26
你是用了不同版本的VS 打开的吧? 有时候不同版本的,会出现这种问题
作者: 硬别    时间: 2013-10-7 14:28
我一直在等待 发表于 2013-10-7 14:26
你是用了不同版本的VS 打开的吧? 有时候不同版本的,会出现这种问题

哦 也许是吧 我再去下载个试试

作者: 我一直在等待    时间: 2013-10-7 14:42
硬别 发表于 2013-10-7 14:28
哦 也许是吧 我再去下载个试试

恩 尽量在编写程序的时候不要用中文。可以避免这类的事情在发生。


作者: 夏闯富    时间: 2013-10-8 09:03
以前编写的程序感染了病毒,文件被损坏了。
作者: haxyek    时间: 2013-10-8 09:16
用记事本打开,看看能看不能。不行就用高级点的编辑器,换个编码
作者: 夏闯富    时间: 2013-10-12 10:13
.cs后缀的文件用记事本打开(默认ANSI编码打开)的也乱码,说明真的是被病毒破坏了。
作者: 曹华    时间: 2013-10-12 23:52
首先,如果仅只是中文出现乱码,应该不是病毒的原因,病毒应该没那么聪明,只修改中文。
于是,这应该涉及到C#对字符集的支持,Encoding是各种编码类的基类,而继承该类的类,主要是下面四个类:ASCIIEnconding、Unicoding、UTF7Encoding、UTF8Encoding,它们分类用来对不同字符集的支持 。
如ASCIIEnconding是对美国标准码的支持,可以理解为是对ASCII码的支持,该编码采用8位二进制数,最高位全为0,但可以表示玩所有的字母,和那么几个统一字母符号。
UTF7Encoding、UTF8Encoding这两个与是一个不同的是采用了16位二进制编码,因而能够表示更多的字符,就拿汉子来说,8位是不能够表示玩所有的汉字,因而需要16位来表示。
而Unicoding就是解决世界各地字符不统一,编码方式不同,而使用的16位编码方式,用以统一各地字符,统一交流。
说了这么多,我猜测你的问题应该是同字符集有关,可能是中文字体发生了改变,又或是设置成了某种不支持的字符编码。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2