En el sistema en el que estuve trabajando recientemente, encontré un problema. El sistema comercial usa codificación UTF-8, mientras que algunos sistemas de soporte usan codificación GB2312.
Si las páginas y los scripts con diferentes codificaciones hacen referencia entre sí, se producirán caracteres confusos. La solución es unificarlos en una sola codificación.
En asp.net, si desea modificar la codificación de la página de salida, puede modificar la siguiente información de configuración en web.config
<solicitud de globalizaciónEncoding="utf-8" respuestaEncoding="utf-8" />
Lo anterior es solo para modificar la codificación predeterminada general. Si solo es necesario modificar la codificación de una determinada página, simplemente puede usar el siguiente código en ASP.net:
Nota: simplemente agréguelo debajo del evento Page_Load().
Codificación gb2312 = Codificación.GetEncoding("gb2312");
Respuesta.ContentEncoding = gb2312;
En aplicaciones que no son ASP.net, los datos que puede leer están codificados en UTF-8, pero si desea convertirlos a la codificación GB2312, puede consultar el siguiente código:
string utfinfo = "document.write("alert('¿Cómo estás?');");";
cadena gb2312info = cadena.Vacío;
Codificación utf8 = Codificación.UTF8;
Codificación gb2312 = Encoding.GetEncoding("gb2312");
// Convierte la cadena en un byte[].
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// Realiza la conversión de una codificación a otra.
byte[] asciiBytes = Codificación.Convert(utf8, gb2312, unicodeBytes);
// Convierte el nuevo byte[] en un char[] y luego en una cadena.
// Este es un enfoque ligeramente diferente para convertir para ilustrar
// el uso de GetCharCount/GetChars.
char[] asciiChars = nuevo char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
gb2312info = new string(asciiChars);
Por supuesto, la conversión entre otras codificaciones es similar al código anterior y no se describirá.