Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: sexto en 27 Enero 2011, 17:17 pm



Título: Ñ y acentos en C#?
Publicado por: sexto en 27 Enero 2011, 17:17 pm
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:

Código:
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


Título: Re: Ñ y acentos en C#?
Publicado por: .mokk. en 27 Enero 2011, 17:42 pm
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


Título: Re: Ñ y acentos en C#?
Publicado por: chubichequer en 27 Enero 2011, 18:07 pm
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.
Código:
Encoding encode = System.Text.Encoding.GetEncoding("1251");


Título: Re: Ñ y acentos en C#?
Publicado por: sexto en 27 Enero 2011, 18:26 pm
He probado las dos formas pero nada...

Lo estoy poniendo bien?

Citar
            FileStream 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...


Título: Re: Ñ y acentos en C#?
Publicado por: [D4N93R] en 27 Enero 2011, 20:58 pm
No me le los codes de los encodings pero puedes usar "utf-8" por ejemplo. Pruebalo.


Título: Re: Ñ y acentos en C#?
Publicado por: Garfield07 en 27 Enero 2011, 21:38 pm
Podrias probar algo como (en C)
Código
  1. FILE *FP = fopen (filename, (a+));
  2. char byte;
  3.  
  4. while (!feof (FP))
  5. {
  6. byte = fgetc (FP)
  7. if ((int)byte = 164)
  8. printf ("%c", (char) 164);
  9. else
  10. putc (byte);
  11. }
  12.  

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.


Título: Re: Ñ y acentos en C#?
Publicado por: sexto en 28 Enero 2011, 17:57 pm
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é.


Título: Re: Ñ y acentos en C#?
Publicado por: seba123neo en 29 Enero 2011, 02:31 am
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:

Código
  1. Imports System.IO
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Dim vLector As New StreamReader("c:\a.txt")
  7.        Dim vTexto As String = vLector.ReadToEnd()
  8.        TextBox1.Text = vTexto
  9.        vLector.Close()
  10.    End Sub
  11. End Class

aca el que funciona:

Código
  1. Imports System.IO
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Dim vLector As New StreamReader("c:\a.txt", System.Text.Encoding.Default)
  7.        Dim vTexto As String = vLector.ReadToEnd()
  8.        TextBox1.Text = vTexto
  9.        vLector.Close()
  10.    End Sub
  11. End Class

en C#:

Código
  1. using System.IO;
  2.  
  3. public class Form1
  4. {
  5.  
  6. private void Form1_Load(System.Object sender, System.EventArgs e)
  7. {
  8. StreamReader vLector = new StreamReader("c:\\a.txt", System.Text.Encoding.Default);
  9. string vTexto = vLector.ReadToEnd();
  10. TextBox1.Text = vTexto;
  11. vLector.Close();
  12. }
  13. }

saludos.


Título: Re: Ñ y acentos en C#?
Publicado por: callemanuel en 15 Abril 2012, 06:06 am
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