Estoy haciendo una especie de Notepad en C#. Un ejercicio que nos ha mandado el profesor para este fin de semana.
He hecho el diálogo para abrir un archivo (.txt) y me lo abre bien, pero no me saca ni la letra ñ ni los acentos.
El código que tengo para abrir el archivo es el siguiente:
FileStream Archivo = new FileStream(AbrirArchivo.FileName, FileMode.Open, FileAccess.Read);
byte[] Contenido;
Contenido = new byte[Archivo.Length];
Archivo.Read(Contenido, 0, (int)Archivo.Length);
textBox1.Text = new UTF8Encoding().GetString(Contenido);
Me imagino que el problema está en el UTF8, pero he probado con ASCII y con un par mas y no hay forma de que los saque.
¿Como lo puedo conseguir?
Muchas gracias
http://msdn.microsoft.com/es-es/library/x8xxf0x5%28VS.80%29.aspx
Nose si esto te sirva, pero por lo menos a mi si
System.Text.Enconding.Default
Sexto en efecto ese utf8 no acepta los acentos ni las ñ en ese caso al menos, si usas default estaras usando un tipo de coficicacion que no esta en la lista y es la windows 1251, esa es la codificacion estandar de windows, es muy similar al ascii 256 pero con algunas diferencias, asi que puedes usar default en vez de utf8 o bien puedes usar esa codificacion de esta manera.
Encoding encode = System.Text.Encoding.GetEncoding("1251");
He probado las dos formas pero nada...
Lo estoy poniendo bien?
CitarFileStream Archivo = new FileStream(AbrirArchivo.FileName, FileMode.Open, FileAccess.Read);
Encoding encode = System.Text.Encoding.GetEncoding("1251");
byte[] Contenido;
Contenido = new byte[Archivo.Length];
Archivo.Read(Contenido, 0, (int)Archivo.Length);
textBox1.Text = new encode("1251").GetString(Contenido);
Acabamos de empezar con Visual C# y aun no lo tengo yo muy dominado el tema...
No me le los codes de los encodings pero puedes usar "utf-8" por ejemplo. Pruebalo.
Podrias probar algo como (en C)
FILE *FP = fopen (filename, (a+));
char byte;
while (!feof (FP))
{
byte = fgetc (FP)
if ((int)byte = 164)
printf ("%c", (char) 164);
else
putc (byte);
}
O algo asi. Hace tiempo que no uso fgetc asi que no se si los arg. están bien, pero mas o menos estaría correcta la idea...
Suerte!
Modf: Para los acentos es exactamente lo mismo
Remodf por si eso...:
La cosa es que leas un byte y si es una Ñ o demás, lo imprimas con su valor ASCII... Así me va a mi en C.
Con UTF8 ya probé y nada.
Lo que comentas de sustituir los carácteres por su código ASCII... no se me había ocurrido.
Ahora probaré.
Hola, creo que con poner System.Text.Encoding.Default se soluciona.
aca te paso un ejemplo que no funciona y me muestra los acentos mal y las "ñ" como caracteres no validos.
No Funciona:
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim vLector As New StreamReader("c:\a.txt")
Dim vTexto As String = vLector.ReadToEnd()
TextBox1.Text = vTexto
vLector.Close()
End Sub
End Class
aca el que funciona:
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim vLector As New StreamReader("c:\a.txt", System.Text.Encoding.Default)
Dim vTexto As String = vLector.ReadToEnd()
TextBox1.Text = vTexto
vLector.Close()
End Sub
End Class
en C#:
using System.IO;
public class Form1
{
private void Form1_Load(System.Object sender, System.EventArgs e)
{
StreamReader vLector = new StreamReader("c:\\a.txt", System.Text.Encoding.Default);
string vTexto = vLector.ReadToEnd();
TextBox1.Text = vTexto;
vLector.Close();
}
}
saludos.
Hola me imagino que la respuesta es un poco tarde para tu tarea pero se que al igual que yo muchas personas leen esto todavia "ya que aparece en google" y les puede servir como respuesta a otras personas
RESPUESTA:
CUANDO GUARDEN EL .TXT DEL QUE VAN A LEER EN LA PARTE DE ABAJO DICE CODIFICACIÓN, EN ESTE PUNTO ELIGAN UTF-8 QUE ES LA QUE RECONOCE C# Y PROBLEMA SOLUCIONADO CON TÍLDES Y TOD