将中文字符写入简单文本文件时出现问题

时间:2014-07-01 09:23:23

标签: c# .net file

--------------------------------
CHECK#:555               COVER:2
      25 !六月 14 12:31:45       
|2CTBL!檯號|2C: 53 / 1 
--------------------------------
1  Pickles/plate        2.00 
2  Water @0.50          1.00 
1  !锅贴套餐A           16.80 
1  !锅贴套餐B           16.80 

   SUBTOTAL:           36.60 
   SERV CHG 10%:        3.66 
                    ---------
                       40.26 

当我将同一文本写入另一个文本文件时,它不显示中文字符

2 个答案:

答案 0 :(得分:2)

使用Encoding.Unicode,之所以这样称呼是有原因的。它将导致2个字节/字符编码,将C# unicode字符串保存到文件中应该没问题。

唯一的问题是你如何检查写的是什么?例如,我不确定在XP Notepad中(但Win7可以)。你可以做一个简单的测试:写一些东西,然后在C#中读取和比较。内容应该匹配。

string write = "some Chinese characters here";
using(var writer = new StreamWriter("blablabla", false, Encoding.Unicode)
    writer.Write(write);
using(var reader = new StreamReader("blablabla", Encoding.Unicode)
{
    var read = reader.ReadToEnd();
    if(read != write)
        throw new Exception("omg");
}

其他可能是那个

sw.Write(sb.ToString());

你确定sb.ToString()会产生你期望的吗?

答案 1 :(得分:0)

在编写文件时尝试不同的编码。 Here is a list of a few