No sistema em que trabalhei recentemente, encontrei um problema: o sistema de negociação usa codificação UTF-8, enquanto alguns sistemas de suporte usam codificação GB2312.
Se páginas e scripts com codificações diferentes fizerem referência entre si, ocorrerão caracteres distorcidos. A solução é unificá-los em uma codificação.
No asp.net, se quiser modificar a codificação da página de saída, você pode modificar as seguintes informações de configuração em web.config
<globalização requestEncoding="utf-8" responseEncoding="utf-8" />
O acima é apenas para modificar a codificação padrão geral. Se apenas a codificação de uma determinada página precisar ser modificada, você pode simplesmente usar o seguinte código em ASP.net:
Nota: Basta adicioná-lo abaixo do evento Page_Load().
Codificação gb2312 = Encoding.GetEncoding("gb2312");
Response.ContentEncoding = gb2312;
Em aplicativos não ASP.net, os dados que você pode ler são codificados em UTF-8, mas se desejar convertê-los para a codificação GB2312, você pode consultar o seguinte código:
string utfinfo = "document.write("alert('Como você está??');");";
string gb2312info = string.Empty;
Codificação utf8 = Codificação.UTF8;
Encoding gb2312 = Encoding.GetEncoding("gb2312");
// Converte a string em um byte[].
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// Realiza a conversão de uma codificação para outra.
byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
// Converte o novo byte[] em char[] e depois em uma string.
// Esta é uma abordagem ligeiramente diferente de conversão para ilustrar
// o uso de GetCharCount/GetChars.
char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
gb2312info = new string(asciiChars);
Claro, a conversão entre várias outras codificações é semelhante ao código acima e não será descrita.