c# StreamWriter日语输出

本文关键字:输出 日语 StreamWriter | 更新日期: 2023-09-27 18:15:46

出于某种奇怪的原因,我正在从一个.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

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

c# StreamWriter日语输出

我假设您正在尝试在记事本中阅读输出(请参阅这篇维基百科文章)。对Encoding.UTF8使用StreamWriter(String, Boolean, Encoding)构造函数,这将导致将BOM写入输出文件,使记事本能够正确读取它。如果您不需要在记事本中读取它,则保持原样,并注意任何读取它并期望它为UTF-8的其他程序都将正确读取它。

这些字符可能表示文件是unicode,而不是ansi。

你打开文件作为一个ANSI文件,在一个文本编辑器?如果是这样,那就是为什么你会看到这些角色。要么尝试以unicode打开它,要么将编码设置为非unicode。

从这里

您没有为保存的文件设置合适的编码。这就是为什么你最终会使用日文字符。如果不以文件的形式使用数据,就不会有真正的问题。如果您将其作为文件使用,则需要对其进行适当编码,以便可读。