我有一个程序,基本上写这样的字符
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来说都是不可读的字符......我真的很茫然为了想法。有谁知道我在这里做错了什么?
答案 0 :(得分:2)
这可能包含在Unicode常见问题解答“What is a surrogate?”中。完全不清楚你实际想要完成什么,但它确实听起来你应该使用FileStream而不是StreamWriter。字节和字符不可互换。