Autor
|
Tema: Ñ y acentos en C#? (Leído 40,445 veces)
|
sexto
Desconectado
Mensajes: 200
|
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
|
|
|
En línea
|
|
|
|
|
chubichequer
Desconectado
Mensajes: 13
|
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");
|
|
|
En línea
|
|
|
|
sexto
Desconectado
Mensajes: 200
|
He probado las dos formas pero nada... Lo estoy poniendo bien? 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...
|
|
|
En línea
|
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
No me le los codes de los encodings pero puedes usar "utf-8" por ejemplo. Pruebalo.
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Podrias probar algo como (en C) FILE *FP = fopen (filename , (a +));char byte; { if ((int)byte = 164) else }
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.
|
|
« Última modificación: 27 Enero 2011, 21:47 pm por Sagrini »
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
sexto
Desconectado
Mensajes: 200
|
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é.
|
|
|
En línea
|
|
|
|
seba123neo
|
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.
|
|
|
En línea
|
|
|
|
callemanuel
Desconectado
Mensajes: 1
|
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
|
|
|
En línea
|
|
|
|
|
|