0

日本語のカタカナ、ひらがな、漢字をたくさん必要とするプロジェクトに取り組んでいます。元ファイルは「MS Pゴシック」フォントのエクセルファイルです。私が抱えている問題は、このタイプの問題と c# を持つ他のすべての人と同じようです。私が見つけた解決策はすべて、c# プログラム内にテキストを追加することから始まるようです。私がやろうとしているのは、C# に作成した .xls または .txt ファイルの 1 つを読み取り、文字列比較などの通常の C# 関数を使用してデータを操作することです。しかし、私がこれを行うと、注目が起こります。データを書き込みまたは表示すると、"?" が生成されます。マーク。ここには新しいものはありません。

私はc ++で同じアイデアを試しましたが、完全に機能します。

問題は、私が利用している他のソフトウェアの相互運用性を操作するには、C++ ではなく C# でなければならないことです。

簡単に言うと、c#(system.string) は c++ (c string) と比較して Unicode をネイティブに処理しませんか?

Visual Studio C++ 2008 Express と Visual Studio C# 2010 Express を使用しています。ファイルは同じですが、c# ではなく c++ で機能します。

申し訳ありませんが、私はしばらく英語を使用していません。いろいろ試しましたが、下が最新ですが、やはり「?」出力用のマーク。

var reader = new StreamReader(File.OpenRead(@"C:\smallerBunShou.txt"), Encoding.UTF8);   
        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            var values = line.Split(',');

            listA.Add(values[0]);
           // listB.Add(values[1]);
           // listC.Add(values[2]);
        }

        int sizeOflistA = listA.Count();

        //using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\WriteLines2.txt"))
        var file = new StreamWriter(File.OpenWrite(@"C:\WriteLines2.txt"), Encoding.UTF8);
        {
            foreach (string line in listA)
            {
                // If the line doesn't contain the word 'Second', write the line to the file. 
                if (!line.Contains("Second"))
                {
                    file.WriteLine(line);
                }
            }
        }

Encoding.Unicode なども試しました。私のコンピューターは日本の PC で、ソフトウェアはほとんど日本語です。これまでの回答の1つによると、それはユニコードの問題ではなく、日本のPCはShift-JISを使用しています。これは、私が調べる必要がある可能性が最も高いです。これを解決したら、私の解決策を投稿します。

更新: 少し調べたところ、Shift-JIS エンコード方式が見つかりました。

Encoding.GetEncoding(932));

これは私の問題を解決しました!正しい方向に向けてくれてありがとう@EricFalsken。

4

1 に答える 1

4

通常の .txt ファイルは Unicode 形式で保存されません。TextReader と Encoding.Unicode を介して実行して FileStream を読み取るときに、バイト形式を指定する必要があります。

ただし、ほとんどの日本のコンピューターとドキュメントは Unicode を使用していないことに注意してください。彼らはまだShift-JISをかなり広範囲に使用しています。

C# のすべての文字列がネイティブで Unicode をサポートしていることを保証できます。

于 2013-04-10T08:05:41.820 に答える