日本語のカタカナ、ひらがな、漢字をたくさん必要とするプロジェクトに取り組んでいます。元ファイルは「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。