0

基本的にこのような文字を書くプログラムがあります

wchar_t c[5] = {static_cast<wchar_t>(x1), static_cast<wchar_t>(x2), static_cast<wchar_t>(x3), static_cast<wchar_t>(x4)};
fileWriter->Write(msclr::interop::marshal_as<String^>(c));

そして後で、彼らにプログラムに入力を戻させます

String^ fileContent = fileReader->ReadToEnd();

私の問題は、x1/x2/x3/x4 に大きな整数値がある場合です (どれかはわかりませんが、50,000 を超えるとどこかにあると思います)。 65533。

StreamReader と StreamWriter のエンコーディング値をいじりましたが、最初は System::Text::Encoding::Unicode に設定していて、なぜそれが機能しないのかわかりません...

シンボルが間違って書かれているのか、それとも読み取られているのかさえわかりません...それが作成するテキストファイルを開くと、それらはすべて私のPCでは読めない文字です...私は本当にアイデアを失っています. ここで私が間違っていることを誰かが知っていますか?

4

1 に答える 1

2

これはおそらく Unicode FAQ の「サロゲートとは何ですか?」でカバーされています。実際に何を達成しようとしているのかは完全に不明ですが、StreamWriter ではなく FileStream を使用する必要があるように思えます。バイトと文字は交換できません。

于 2011-01-29T14:25:32.250 に答える