c#编码问题

产生乱码的原因(只有文本文件才会乱码):文本文件存储时采用的编码,与读取时采用的编码不一致,就会造成乱码问题。解决:采用统一的编码就ok.
文本文件编码,文本文件有不同的存储方式,将字符串以什么样的形式保存为二进制,这个就是编码,UTF-8、ASCII、Unicode等,如 果出现乱码一般就是编码的问题,文本文件相关的函数一般都有一个Encoding类型的参数,取得编码的方式:Encoding.Default、 Encoding.UTF8、Encoding.GetEncoding(“GBK”)
文件编码(码表)
•ASCII:英文码表,每个字符占1个字节。
•GB2312:兼容ASCII,包含中文。每个英文占一个字节(正数),中文占两个字节(负数)
•GBK:简体中文,兼容gb2312,包含更多汉字。英文占1个字节(正数),中文占两个(1个负数,1个可正可负)
•Big5:繁体中文
•Unicode:国际码表,中文英文都站2个字节。
•UTF-8:国际码表,英文占1个字节,中文占3个字节。l输出Encoding.GetEncodings(),所有编码。
什么是文本文件。拖到记事本中还能看得懂的就是文本文件,doc不是。
File类的常用静态方法:(FileInfo*)
•voidAppendAllText(string path, string contents),将文本contents附加到文件path中
•bool Exists(string path)判断文件path是否存在
•string[]ReadAllLines(string path) 读取文本文件到字符串数组中
•stringReadAllText(string path) 读取文本文件到字符串中
•voidWriteAllText(string path, string contents)将文本contents保存到文件path中,会覆盖旧内容。
•WriteAllLines(string path,string[] contents),将字符串数组逐行保存到文件path中,会覆盖旧内容。
正数对应的二进制取反 ,再加1就是负数的二进制。
Encoding.Default

System.Text.DBCSCodePageEncoding双字节字符集。如果输出EncodingName的话,结果为:简体中文(gb2312)

Encoding.Default:与操作系统的当前“区域与语言选项”有关。

你可能感兴趣的:(c#,中文编码)