Estoy trabajando en la escritura de algún código para borrar la entrada del usuario a mi sitio ASP.NET. Necesito borrar la entrada para eliminar todas las referencias a los caracteres ASCII 145, 146, 147, 148 que ocasionalmente reciben información de mis usuarios de Mac que están copiando y pegando el contenido que escriben en un procesador de texto en sus Macs.convirtiendo manualmente entre caracteres ASCII y .NET
Mi problema es que las tres cadenas siguientes me hacen creer que deberían dar como resultado el mismo texto.
string test1 = Convert.ToChar(147).ToString();
string test2 = String.Format("'{0}'", Convert.ToChar(147));
char[] characters = System.Text.Encoding.ASCII.GetChars(new byte[] { 147 });
string test3 = new string(characters);
Sin embargo, cuando puse un cuadro de texto ASP para igualar la siguiente
txtShowValues.Text = test1 + "*" + test2 + "*" + test3;
consigo un valor en blanco para test1, test2 funciona correctamente y salidas test3 como un '?'.
¿Alguien puede explicar lo que está sucediendo de manera diferente? Espero que esto me ayude a comprender cómo .NET está utilizando valores ASCII para caracteres de más de 128, de modo que pueda escribir un buen script de depuración.
EDIT
Los valores que mencioné (145 - 148) son comillas. Así que solo izquierda, simple derecha, doble izquierda, doble derecha.
Por "funciona correctamente" quiero decir que da como resultado una cita en mi navegador.
SEGUNDA EDICION
El siguiente código (mencionado en una respuesta) da como resultado las comillas también. Así que tal vez el problema estaba usando ASCII en la prueba 3.
char[] characters2 = System.Text.Encoding.Default.GetChars(new byte[] { 147 });
string test4 = new string(characters2);
TERCERA EDICIÓN
me encontré con un mac que podía tomar prestado y fue capaz de duplicar el problema. Cuando copie y pegue texto que contenga símbolos de comillas en Word en mi aplicación web en el mac, pegará comillas (147 y 148). Cuando presiono Guardar, las cotizaciones se guardan en la base de datos, así que usaré el código con el que me ayudaste para borrar ese contenido.
FOUTH EDIT
Pasé algún tiempo escribiendo más código de ejemplo basado en las respuestas aquí y me di cuenta de que tiene algo que ver con MultiLine TextBoxes en ASP.NET. Había buena información aquí, así que decidí comenzar una nueva pregunta: ASP.NET Multiline textbox allowing input above UTF-8
.NET utiliza Unicode. –
, pero ¿por qué funciona test2? En todo caso, esperaba que test3 funcionara. –
¿Qué quiere decir con "funciona correctamente"? Es un personaje de control invisible: se supone que se muestra como una cadena en blanco. ¿Qué salida esperas? –