Содержимое базы данных в UTF-8, но отображается на веб-странице ISO-8859-1 - PullRequest
1 голос
/ 26 марта 2012

Раньше моя веб-страница использовала кодировку UTF-8, и она вставляла много содержимого в мою базу данных SQL Server 2008 с этой кодировкой.

Теперь моя веб-страница использует кодировку ISO-8859-1.Но он все еще использует тот же контент из базы данных.Теперь моя проблема в том, что содержимое в базе данных соответствует старой кодировке.

Есть ли способ преобразовать все в базе данных из одной кодировки в другую?Один за всех или со строкой подключения?

1 Ответ

1 голос
/ 27 марта 2012

Ну, во-первых, вы, вероятно, уже используете поле NVARCHAR или NTEXT в своей базе данных. Следовательно, содержимое поля кодируется как Unicode.

Было бы неплохо предположить, что ваша исходная форма публикации, отправленная с использованием кодировки UTF-8, и ваша принимающая страница имели свою Response.Codepage, установленную в 65001, чтобы входящая строка сохранялась в базе данных с точностью.

Если вышесказанное верно, то для отправки контента клиенту с использованием новой кодировки было бы просто установить правильную кодовую страницу страницы, для ISO-8869-1 мы используем кодовую страницу 1252. С кодовой страницей, установленной на 1252 любые данные, отправленные с использованием Response.Write, будут преобразованы из собственного Unicode в кодовую страницу 1252.

Тем не менее, вы также можете обойтись, если поврежденные данные хранятся в БД, но в HTML все выглядит хорошо. Смотрите мой ответ здесь на старый вопрос, чтобы узнать, как это может быть. Этот же ответ содержит шаги, необходимые для восстановления данных в БД. После этой настройки должно быть достаточно выходной кодовой страницы.

Обратите внимание, что сам файл ASP должен быть сохранен как Windows-1252, а не как UTF-8, в противном случае любое статическое содержимое ASCII, отсутствующее в файле, будет неправильно принято клиентом.

...