C# streamwriter方法写入汉字时乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# streamwriter方法写入汉字时乱码相关的知识,希望对你有一定的参考价值。
我的代码是这样的
StreamWriter sr = new StreamWriter("xingjian.txt", true);
sr.WriteLine("\n" + this.textBox1.Text + " " + this.textBox2.Text + " " + this.textBox3.Text);
sr.Close();
将输入到文本框中的信息保存在xingjian记事本中,当输入汉字时就会出现乱码!那位高手请指点指点,谢谢!!!
测试页面代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace StreamReaderAndStreamWriter
class Program
static void Main(string[] args)
Console.WriteLine("读取文本文件内容");
Console.Write("输入文本文件所在目录:");
string sBaseFile = Console.ReadLine();
StreamReaderAndStreamWriter.ReadFile(sBaseFile);
Console.WriteLine("追加文件");
StreamReaderAndStreamWriter.AppendText(sBaseFile);
类页面代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace StreamReaderAndStreamWriter
class StreamReaderAndStreamWriter
//读取文本文件
public static void ReadFile(string sFile)
if (File.Exists(sFile))
//获取一个文件流对象,用于读写文件
FileStream fs = File.OpenRead(sFile);
//获取一个指向文件流的流读取器
StreamReader sr = new StreamReader(fs,Encoding.GetEncoding("gb2312"));//以gb2312编码读取文本文件中的汉字,要不然,读取的内容中如果有汉字,则显示为乱码。
//读取所有文本内容
string data = sr.ReadToEnd();
//关闭对象,释放资源
sr.Close();
fs.Close();
Console.WriteLine(string.Format("读取文件>>0", sFile));
Console.WriteLine(data);
else
Console.WriteLine(string.Format("0不存在",sFile));
//追加文本文件
public static void AppendText(string sFile)
if (File.Exists(sFile))
//编辑文本文件
Console.WriteLine("输入写入内容");
string swrite = Console.ReadLine();
//获取一个指向文件流的流编辑器
StreamWriter sw = new StreamWriter(sFile, true, Encoding.GetEncoding("gb2312"));//这里很重要,看一下这个StreamWriter()格式就一目了然了,sFile声明了文本对象;true声明了可以进行Appedn;Encoding.GetEncoding("gb2312")声明了一GB2312编码向文本文件写入内容,这样就可以避免写入汉字出现乱码。
sw.Write(swrite);
//关闭对象,释放资源
sw.Close();
//fs.Close();
Console.WriteLine("向0中追加文件",sFile);
else
Console.WriteLine("0不存在",sFile);
参考技术A StreamWriter sr = new StreamWriter("xingjian.txt", true,System.Text.Encoding.Default);
编码的问题咯!本回答被提问者和网友采纳
c# streamWriter 的write方法是添加还是覆盖??
streamWriter 的write方法好像是可以向文件末尾添加字符串,例如:
streamWriter my = new streamWriter(“C:\\test”);
my.write("OK"); my.flush();
那么write方法能否覆盖文件内容呢??
另外,我用write()方法时发现,如果后面没有flush()语句,就不能真的写入文件,为什么??
如果你是要替换该文件的内容,你可以使用 FileInfo 对象,指向你需要替换的文件,先用 FileInfo.Delete 将其删除,再写入就是新内容了。
我不会 C#,我这是 VB 的:
If fi文件 IsNot Nothing Then
fi文件.Delete()
Using sw As New StreamWriter(fi文件.OpenWrite)
sw.Write(txt主.Text)
End Using
Else
Dim sfd As New SaveFileDialog
With sfd
If di当前文件夹 Is Nothing Then
.InitialDirectory = FileIO.SpecialDirectories.MyDocuments
Else
.InitialDirectory = di当前文件夹.FullName
End If
.Filter = ("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*")
.AddExtension = True
If .ShowDialog = DialogResult.OK Then
fi文件 = New FileInfo(.FileName)
fi文件.Delete()
Using sw As New StreamWriter(fi文件.OpenWrite, System.Text.Encoding.Default)
sw.Write(txt主.Text)
End Using
End If
End With
End If
boo是否更改 = False
fi当前文件 = fi文件
Me.Text = fi当前文件.Name & "-文本编辑器"
用 Using 可以保证 End Using 之后写入文件…… 参考技术B write方法不会覆盖文件内容```
my.flush(); //是清空缓存区的垃圾
不清空可能出错```本回答被提问者采纳
以上是关于C# streamwriter方法写入汉字时乱码的主要内容,如果未能解决你的问题,请参考以下文章