Hola de nuevo, y de nuevo con mi zxFortunes.
He conseguido poder leer bien de un archivo de texto (esto es que me leyera
las letras acentuadas y que la posición se corresponda con la real dentro
del texto) mediante una lectura con el encoding de UTF7.
Pero entonces, los textos en inglés no se corresponde lo leído con la
posición dentro del texto. En los textos en ingés se leen con UTF8 o ASCII,
pero entonces los que están en castellano se leen mal.
El código es este:
for(int i=0;i<this.m_numFortuneFiles;i++)
{
System.Text.Encoding enc=System.Text.Encoding.ASCII;
FileStream fsRead=new FileStream(m_fortuneFiles[i],FileMode.Open);
BinaryReader br=new BinaryReader(fsRead,enc);
nPosInFile=0;
bw.Write(i);
bw.Write(nPosInFile);
m_numFortunes++;
for(;nPosInFile<=fsRead.Length;nPosInFile++)
{
//Parece ser que hay veces que se llega al final del archivo sin haber leído
fsRead.Length caracteres
try
{
ch=br.ReadChar();
}
catch(EndOfStreamException)
{
nPosInFile=(int)fsRead.Length;
bw.Write(i);
bw.Write(nPosInFile);
m_numFortunes++;
ch=' ';
}
//Si es un final
if(ch=='%')
{
//idx.nPosInFile=(int)sr.BaseStream.Position;
bw.Write(i);
bw.Write(nPosInFile);
m_numFortunes++;
}
}
br.Close();
fsRead.Close();
}
Como veréis el encoding con el que leo es el ASCII (que parece que funciona,
aunque en lugar de leer letras con acentos lee cosas raras, pero al menos se
corresponden con lo que quiero (me resulta muy curioso, porque cuando lo
probé hace unos días símplemente se saltaba las letras acentuadas, y ahora
no, quizás se deba al sp1 del net 1.1, o a algo que hacía mal).
Lo curioso es que luego, para leer el texto del fichero (leerlo y
transformarlo), lo hago con UTF7 y se lee bien y en su sitio.
Me gustaría que alguien pudiera explicarme el motivo de este galimatías, o
que ne direccione a una página donde se explique, porque la verdad,
funcionar funciona, pero no sé cómo.
Gracias de antemano.
Leer las respuestas