C ++ lettura / scrittura caratteri più grandi di ~ 50.000
-
27-10-2019 - |
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?
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.