我的文件输出有问题。我需要写一个字符ý和file的文件。我可以使用Convert.ToChar(0253)& Convert.ToChar(0254)。这是一个旧的程序,我用C#从basic +重写了。旧程序创建了一个简单的文本文件,如果在wordpad中打开,将呈现特殊字符ý&位。但是,当我创建文件并在wordpad中打开它时,它会将字符渲染为ý和¾。下面是在记事本和wordpad中打开的输出文件。如何输出字符,以便它们在记事本和字盘中呈现为ý和??我还在下面插入了我的代码。提前谢谢。
这样在记事本中呈现如下:
3/31/2015ý15þ
14182515þ
ENDþ
但是,在wordpad中打开文件时,它呈现如下:
3/31/2015ý15þ
14182515þ
ENDþ
textOut.WriteLine(shortDate + Convert.ToChar(0253) + cRenPer + Convert.ToChar(0254));
答案 0 :(得分:2)
编写文件时应指定UTF8或UTF16编码。你可以这样做:
StreamWriter writer = new StreamWriter(<file path>, false, Encoding.UTF8);
答案 1 :(得分:1)
您可以在定义streamreader
时设置编码StreamWriter textOut = new StreamWriter(new FileStream((dirPath + batchNum + ".REN"),
FileMode.Create, FileAccess.Write),
Encoding.UTF8);
答案 2 :(得分:1)
所以,正如Thorsten Dittmar建议我需要将流编写器编码为utf8。这允许预先存在的应用程序按原样读取文件。以下是对流编写器类的更改。
StreamWriter textOut = new StreamWriter((dirPath + batchNum + ".REN"), false, new UTF8Encoding(true));
这是一个编辑:我最终修改了代码。尽管文本文件最终在word-pad中被正确解释,但遗留应用程序仍然没有读取它。我修改后的代码如下:
StreamWriter textOut = new StreamWriter(new FileStream((dirPath + batchNum + ".REN"),
FileMode.Create, FileAccess.Write),
System.Text.UnicodeEncoding.Default);
答案 3 :(得分:0)
您可以使用以下代码写入文件, 请注意第二个编码参数。 这将影响文件的编码方式,这反过来将影响各种文本编辑器对待ite的方式。
string fileName = "myFile.txt";
using (TextWriter textOut = new StreamWriter(File.OpenWrite(fileName),System.Text.Encoding.Unicode))
{
textOut.WriteLine(Convert.ToChar(0254));
}