В системе, над которой я недавно работал, я столкнулся с проблемой. Торговая система использует кодировку UTF-8, а некоторые поддерживающие системы используют кодировку GB2312.
Если страницы и скрипты с разными кодировками ссылаются друг на друга, символы будут искажены. Решение — объединить их в одну кодировку.
В asp.net, если вы хотите изменить кодировку выходной страницы, вы можете изменить следующую информацию о конфигурации в web.config.
<глобализация requestEncoding="utf-8" responseEncoding="utf-8" />
Вышеупомянутое предназначено только для изменения общей кодировки по умолчанию. Если необходимо изменить только кодировку определенной страницы, вы можете просто использовать следующий код в ASP.net:
Примечание. Просто добавьте его под событием Page_Load().
Кодировка gb2312 = Encoding.GetEncoding("gb2312");
Response.ContentEncoding = gb2312;
В приложениях, отличных от ASP.net, данные, которые вы можете читать, имеют кодировку UTF-8, но если вы хотите преобразовать их в кодировку GB2312, вы можете обратиться к следующему коду:
string utfinfo = "document.write("alert('Как дела??');");";
строка gb2312info = string.Empty
Кодировка utf8 = Кодировка.UTF8;
Кодировка gb2312 = Encoding.GetEncoding("gb2312");
// Преобразуем строку в байт[].
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// Выполняем преобразование из одной кодировки в другую.
byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
// Преобразуем новый byte[] в char[], а затем в строку.
// Это немного другой подход к преобразованию для иллюстрации
// использование GetCharCount/GetChars.
char[] asciiChars = новый char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
gb2312info = new string(asciiChars);
Конечно, преобразование между различными другими кодировками аналогично приведенному выше коду и не будет описываться.