Вопрос

У меня есть программа, которая в основном пишет таких персонажей

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 сначала и не могу понять, почему это не сработает ...

Я даже не уверен, что он неправильно пишет символ или читает его ... Когда я открываю текстовый файл, который он создает, все они нечитаемые символы для моего ПК ... Я действительно не могу получить идеи. Кто -нибудь знает, что я здесь делаю не так?

Это было полезно?

Решение

Это, вероятно, покрыто FAQ Unicode "Что такое суррогат?"Совершенно неясно, чего вы на самом деле пытаетесь достичь, но это, безусловно, звучит так, как будто вы должны использовать FileStream, а не Strehwriter. Байты и символы нет смену.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top