Domanda

Ho un programma che scrive in sostanza personaggi come questo

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

E poi ha di nuovo ingresso nel programma con un solo

String^ fileContent = fileReader->ReadToEnd();

Il mio problema è quando x1 / x2 / x3 / x4 hanno un valore intero di qualche gran numero (non posso essere sicuro che, ma penso che sia da qualche parte in giro quando si va al di sopra di 50.000) si legge poi nel personaggio con un valore di 65533.

Ho pasticciato circa con i valori che codificano StreamReader e StreamWriter, ma li ho impostati su System :: Text :: :: codifica Unicode in un primo momento e non può vedere il motivo per cui non avrebbe funzionato ...

Io non sono nemmeno sicuro se sta scrivendo il simbolo in modo errato o leggerlo ... Quando ho aperto il file di testo che crea, sono tutti i caratteri illeggibili per il mio PC ... Sono davvero in perdita per le idee. Qualcuno sa che cosa sto facendo male qui?

È stato utile?

Soluzione

Questa è probabilmente coperto dalla Unicode FAQ " Che cosa è un surrogato? "e 'del tutto chiaro che cosa si sta effettivamente cercando di realizzare, ma suona certo, come si dovrebbe usare un FileStream e non uno StreamWriter. Byte e personaggi sono non intercambiabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top