Ir al contenido principal

tip: Ajax y los caracteres especiales.

Al enviar contenido mediante GET, los diferentes browsers lo hacen a su manera:
Internet Explorer (IE) codifica en UNICODE.
Mozilla codifica en ISO-8859-1.

Una de las soluciones planteadas es usar la funcion escape de javascript. Pero no es suficiente. Solo suluciona los casos de signos del tipo &%$#. Para poder codificar todos los caracteres y lograr enviar contenido internacional, hay que utilizar la funcion encodeUriComponent, la que codificara en UTF-8, y asi salvara todos los caracteres.

Para asegurar compatibilidad se recomienda enviar los headers al XML:

{AJAX}.setRequestHeader('Content-Type', 'text/xml; charset=UTF-8');

Comentarios

Anónimo dijo…
Muy interesante !

Entradas más populares de este blog

[links] Links para descargas de Visual Studio 2008 SP1, Framework .NET 3.5, su SP1 y Sql Server Express 2008

En el proceso de modernizacion de los entornos de desarrollo que comunmente uso para trabajar, acumule estos links de descargas, que paso a compartir para ahorarle la busqueda a algun colega:

Microsoft .NET Framework 3.5 [web] 197.12 MB

Requerimientos:Windows Server 2003Windows Server 2008Windows VistaWindows XP256 MB de RAM500 MB de espacio disponible en disco



Microsoft .NET Framework 3.5 Service Pack 1 [web] 231.5 MB

Requerimientos:Windows Server 2003Windows Server 2008Windows VistaWindows XP256 MB de RAM500 MB de espacio disponible en disco



Windows Installer 4.5 Redistributable - Español [Windows Server 2003] [web] 3.2 MB

Requerimientos:Windows Server 2003 Service Pack 1Windows Server 2008Windows VistaWindows XP Service Pack 2



Microsoft Visual Studio 2008 Service Pack 1 (iso) [web] 913.79 MB

Requerimientos:Windows Server 2003Windows Server 2008Windows VistaWindows XP1024 MB de RAM



Microsoft SQL Server 2008 Express [web] 99.2 MB

Requerimientos:Windows Server 2003 Service Pack 2Windows Server …

Pruebas de desempeño - XML Webservices

En esta oportunidad, el desacoplamiento al que llegamos nos permite traspasar las barreras de la organizacion. Nuestro servicio de suma, ahora lo proporciona un Werbservices. Por lo tanto, podria estar fuera nuestra bateria de servidores, y la aplicacion funcionaria igual. Por lo menos en resultado, no en prestaciones.
Los cambios:

Agregamos en Web services al proyecto, con este codigo en el ASMX.



using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
publicclass Servicio : System.Web.Services.WebService
{

public Servicio(){}

[WebMethod]
publiclong sumar(long n)
{
return ++n;
}

}

Incluimos la referencia WEB a nuestro WS, y estos cambios en la aplicacion.



using System;
using System.Collections.Generic;
using System.Configuration; // Agregar referencia System.Configuration 2.0
using System.IO;
using System.Text;
using System.Th…

Pruebas de desempeño - En otro DLL

Agregamos otro proyecto a la solución, del tipo libreria, en la que ubicaremos el servicio de suma.



using System;
using System.Collections.Generic;
using System.Text;

namespace Sumador
{
publicclass Servicio
{
publicstaticlong sumar(long n)
{
return ++n;
}
}
}


El código anterior modificado para esta prueba:



using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;

namespace Tester
{
class Program
{
privatestaticbool iterar = true;
staticvoid Main(string[] args)
{
int duracion = 1000;

Console.Write("Nombre de la prueba:");
string nombre = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("Presione una tecla para iniciar la prueba");
Console.ReadKey();

Console.WriteLine("Finalizar prueba cada {0} milisegundos",duracion);


short i = 0;
using(StreamWriter sw = File.AppendText(string.Format("{0}.txt",nombre.Replace(' ','_')…