如何编码特殊字符?

时间:2015-03-31 13:49:06

标签: c# text-files special-characters

我的文件输出有问题。我需要写一个字符ý和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));

4 个答案:

答案 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); 

MSDN for this constructor

答案 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));
}