Question

J'ai un programme qui écrit essentiellement des personnages comme celui-ci

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));

Et puis a plus tard les remettre d'entrée dans le programme avec seulement

String^ fileContent = fileReader->ReadToEnd();

Mon problème est quand x1 / x2 / x3 / x4 ont une valeur entière de quelque grand nombre (je ne peux pas être sûr, mais je pense qu'il est quelque part quand il passe au-dessus 50 000), il lit alors dans le caractère avec une valeur de 65.533.

J'ai foiré au sujet des valeurs codant pour StreamReader et StreamWriter, mais je les ai mis à System :: Text :: :: encodage Unicode au début et ne voit pas pourquoi cela ne marcherait pas ...

Je ne suis même pas sûr que ce soit l'écriture le symbole de manière incorrecte ou lire ... Lorsque j'ouvre le fichier texte qu'il crée, ils sont tous les caractères illisibles pour mon PC ... Je suis vraiment à une perte pour des idées. Est-ce que quelqu'un sait ce que je fais mal ici?

Était-ce utile?

La solution

Ceci est probablement couvert par la FAQ Unicode « Qu'est-ce qu'un substitut? «Il est tout à fait clair ce que vous essayez d'accomplir réellement, mais il est certain que les sons vous devez utiliser un FileStream et non un StreamWriter. Octets et les caractères sont pas interchangeable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top