C#StreamWriter输出日文

时间:2014-07-30 18:31:36

标签: c# streamwriter

由于一些奇怪的原因,我正在从.txt(记事本)文件中读取数据,我想删除第一个5位数字。程序运行后,我的输出文件正在打印,我认为是日语。我将发布一些代码,以及下面的示例输入和输出。任何帮助将在追踪为什么会发生这种情况时受到赞赏。谢谢。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace BasicFileStripper
{
class Program
{
    static void Main(string[] args)
    {
        //var encoding = new ASCIIEncoding();
        StreamWriter write = new StreamWriter(@"C:\Users\Josh\Desktop\MillerEpicOutputs\ClientIds.txt");
        StreamReader read = new StreamReader(@"C:\Users\Josh\Desktop\MillerEpicOutputs\j.txt");//, encoding);
        string line;
        int count = 0;
        write.Write("{");
        while ((line = read.ReadLine()) != null)
        {
            count++;
            string copy = line.Substring(0, 5);
            write.Write(copy + ",");
            Console.WriteLine(line);
        }
        write.WriteLine("};");
        write.WriteLine("Count: " + count);
        write.Close();
    }
}
}

示例输入:

68669 - (DO NOT USE)
68363 - 100 Men of Blue Hills
68364 - 10484 Marty LLC
68365 - 21st Century Therapy
69006 - 21st Century Therapy PC
69007 - 31 Dodge Partnership
69008 - 34 Merriam, LLC
69009 - 3525 Sage Council of Co-Owners

示例输出: 㙻㘸㤶㘬㌸㌶㘬㌸㐶㘬㌸㔶㘬〹㘰㘬〹㜰㘬〹㠰㘬〹㤰㘬〹〱㜬㄰㐹㜬

3 个答案:

答案 0 :(得分:4)

我假设您正在尝试在记事本中读取输出(请参阅(this Wikipedia article)。将StreamWriter(String, Boolean, Encoding) constructorEncoding.UTF8一起使用,这将导致将BOM写入输出文件,使记事本正确读取。如果你不需要在记事本中阅读它,保持原样,并注意其他任何读取它并期望它是UTF-8将正确读取它。

答案 1 :(得分:1)

  

这些可能是指定文件是unicode而不是ansi的字符。

     

您是否在文本编辑器中将文件作为ANSI文件打开?如果是这样,那就是你看到>字符的原因。尝试将其打开为unicode,或将您的编码设置为unicode。

From here

答案 2 :(得分:1)

您没有对保存的文件进行正确的编码。这就是你最终使用日文字符的原因。如果您不将数据作为文件使用,则没有实际问题。如果您将其作为文件使用,则需要对其进行正确编码以使其可读。