Pregunta

Tengo un programa que básicamente escribe personajes como este.

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

Y luego más tarde los ingresa al programa con solo

String^ fileContent = fileReader->ReadToEnd();

Mi problema es cuando x1/x2/x3/x4 tiene un valor entero de un número grande (no puedo estar seguro de cuál, pero creo que está en algún lugar alrededor cuando va por encima de 50,000), luego se lee en el carácter con un valor de 65533.

Me he metido con los valores de codificación de StreamReader y StreamWriter, pero los tengo configurados en System :: Text :: Coding :: Unicode al principio y no puedo ver por qué eso no funcionaría ...

Ni siquiera estoy seguro de si está escribiendo el símbolo incorrectamente o leyendo ... Cuando abro el archivo de texto que crea, todos son personajes ilegibles para mi PC ... realmente estoy perdido para ideas. ¿Alguien sabe lo que estoy haciendo mal aquí?

¿Fue útil?

Solución

Esto probablemente esté cubierto por las preguntas frecuentes de Unicode "¿Qué es un sustituto?"No está completamente claro lo que realmente está tratando de lograr, pero parece que debería usar una flujo de filre y no un streamwriter. Los bytes y los caracteres son no intercambiable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top