Есть заказчик, который хочет сделать русскую версию своего сайта. Я использую кодировку UTF-8 для фронтенда и бэкэнда, но статическая русская информация, генерируемая через базу данных, искажается. При отображении с использованием GB2312 статическая русская информация, сгенерированная через базу данных, отображается правильно, но русский текст в файле шаблона искажается.
Конкретные характеристики заключаются в следующем:
1. Реализовать нормальный русский язык через шаблоны.
2. Статическая русская информация, генерируемая через серверную базу данных, отображается нормально в серверной части, но в искаженном виде во внешнем интерфейсе.
3. Английский нормальный.
Похожие или разные выражения, относящиеся к теме
FSO записывает файлы в кодировке UTF-8.
Как FSO может генерировать файлы в кодировке utf-8?
Какой формат кодировки файлов, создаваемых FSO, используется по умолчанию?
Как конвертировать в кодировку UTF-8
Проблема с созданием статических веб-страниц FSO.
Код использования FSO для создания файлов в ASP выглядит следующим образом:
Скопируйте код кода следующим образом:
функция createfile(sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
set f1=fso.opentextfile(sfilename,2,true,-1)
f1.write(содержание)
f1.закрыть
установить fso=ничего
конечная функция
fso.opentextfile(sfilename,2,true,-1) Последний параметр -1 указывает формат кодировки Unicode. Если формат кодировки — Unicode, веб-страница отображает UTF-16 с прямым порядком байтов.
Метод Опентекстфиле
Создает указанный файл и возвращает объект TextStream, который можно использовать для чтения или записи созданного файла.
object.OpenTextFile(имя файла[, iomode[, create[, формат]]])
Объект параметра, обязательный. Должно быть именем объекта FileSystemObjec или Folder. Это фсо.
имя файла, обязательно. Строковое выражение, определяющее создаваемый файл. Вот имя файла.
iomode, необязательный параметр, указывает, используется ли файл для чтения, записи или добавления. Значение по умолчанию — 1 для чтения, 2 для записи и 8 для добавления.
create, необязательный параметр, создавать ли файл, если он не существует, значение по умолчанию — false, если вы хотите его создать, установите для него значение true.
формат, параметр может быть одним из следующих значений, по умолчанию используется формат ASCII, и нам не нужен utf-8:
TristateUseDefault -2 открывает файл в формате системы по умолчанию.
TristateTrue -1 открывает файл в формате Unicode.
TristateFalse 0 Открыть файл в формате ASCII.
Существует только три атрибута кодировки FSO. По умолчанию в системе используются Unicode, ASCII, и нам не нужен utf-8. Поэтому обычно файлы, созданные с использованием компонентов FSO, имеют формат кодировки gb2312.
Решение первое
Кодировка GB2312 содержит русские буквы. Если на странице установлен упрощенный китайский язык GB2312, то русский язык может отображаться нормально. Однако, поскольку по умолчанию для китайского языка используется отображение «Song Ti», русский язык будет отображаться как полноразмерные символы в «Song Ti». что некрасиво, поэтому необходимо использовать иностранные шрифты, например «New Rome» или «Arial» и т. д. Китайские клиенты могут там общаться, но когда настоящие россияне просматривают Интернет, им необходимо скачать и установить китайский язык, что не идеально и может привести к отказу от просмотра Интернета.
Решение 2
Поскольку ASP — старый язык, некоторые его функции очень плохо поддерживают UTF-8. FSO не поддерживает непосредственное создание файлов в формате UTF-8, поскольку не может указать требуемый формат файла. Например, если вы хотите создать файл в формате UTF-8, вы не можете использовать часто используемый объект Scripting.FileSystemObject. Мы должны изменить свое мышление и использовать Adodb.Stream. Именно так реализованы некоторые современные программы для блогов, такие как zblog.
Функция объекта Scripting.FileSystemObject для создания файла следующая:
FileSystemObject.CreateTextFile(имя файла[,перезаписать[,юникод]])
Атрибут unicode описывается следующим образом:
Необязательный. Логическое значение, указывающее, следует ли создавать файл в формате Unicode или ASCII. Это значение равно True, если файл создан в формате Unicode; False, если файл создан в формате ASCII. Если этот раздел опущен, предполагается, что создается файл ASCII.
К сожалению, вы не можете использовать эту функцию для создания файлов формата UTF-8.
Используйте объект ADODB.Stream, информацию об использовании см. ниже:
Скопируйте код кода следующим образом:
Установите objStream = Server.CreateObject("ADODB.Stream")
С объектным потоком
.Открыть
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=стр
.SaveToFile server.mappath("/sitemap.xml"),2
.Закрывать
Конец с
Установить objStream = Ничего
Приложение: Введение в ASCII, Unicode и UTF-8.
ASCII — это набор символов, включающий прописные и строчные английские буквы, цифры, управляющие символы и т. д. Он представлен одним байтом и находится в диапазоне 0–127.
Поскольку количество символов, представленных ASCII, очень ограничено, каждая страна или регион предложила на основе этого свой собственный набор символов. Например, GB2312, который широко используется в Китае, обеспечивает кодировку китайских символов и представлен двумя байтами.
Эти наборы символов несовместимы друг с другом, и одни и те же числа могут обозначать разные символы, что создает проблемы при обмене информацией.
Юникод — это набор символов, который сопоставляет все символы в мире с уникальным номером (кодовой точкой), например номером 0x0041, соответствующим букве a. Юникод все еще находится в разработке и содержит все больше и больше символов.
При хранении символов, представленных в Юникоде, требуется определенный метод кодирования, например UCS-2, который использует два байта для представления символов в кодировке Юникода. UTF-8 — это еще один метод кодирования набора символов Юникода. Он имеет переменную длину, до 6 байт, а символы длиной менее 127 представлены одним байтом. Он дает тот же результат, что и набор символов ASCII, поэтому имеет очень много значений. Хорошая совместимость, английский текст в кодировке ASCII может обрабатываться как кодировка UTF-8 без изменений и широко используется.