Я пытаюсь переместить старый классический ASP-сайт в Azure App Service. Веб-страницы работают нормально, но отображают национальные символы из столбцов varchar
в качестве вопросительных знаков.Столбец Varchar от SQL Server отображается как «???» на классической веб-странице ASP, размещенной на Azure
Как воспроизвести:
Создание базы данных SQL Server (на Azure или на другой SQL Server) с
Cyrillic_General_100_CI_AS collation
Создайте таблицу с
varchar
иnvarchar
столбцов:create table dbo.Test ( id int identity (1,1) not null, code varchar(255) null, name nvarchar(255) null )
Вложить несколько тестовых данных:
insert dbo.Test (code, name) values ('привет-1', N'привет-2') insert dbo.Test (code, name) values ('привет-3', N'привет-4')
Убедитесь, что данные выбраны штраф в SSMS:
select * from dbo.Test: id code name 1 привет-1 привет-2 2 привет-3 привет-4
Создать веб-страницу, которая отображает данные:
id code name 1 ??????-1 привет-2 2 ??????-3 привет-4
Таким образом, nvarchar
столбцы отображаются в порядке, но varchar
столбцов нет. Используя следующий код на веб-странице Azure не поможет:
Response.CharSet = "windows-1251"
Response.CodePage = 1251
Session.CodePage = 1251
На «обычных» IIS все отображается нормально - может быть, потому, что он имеет установку «кодирования ASP». Кто-нибудь знает, как исправить это на Azure?
Заранее спасибо
Ну, а затем использовать 'nvarchar' для ничего кириллицы и сделать с ней! Кириллическим символам нужна поддержка Unicode, которую может предоставить только тип данных 'nvarchar'. Так что же тогда вопрос? Просто используйте 'nvarchar': ... –
Марк, на« регулярной »IIS одна и та же веб-страница работала отлично в течение многих лет и отлично работает сейчас, даже с varchar. Почему он не может работать на Azure? И преобразование существующих столбцов varchar в nvarchar в существующую (большую!) Базу данных не является вариантом - потому что для этого требуются также массовые изменения существующих веб-страниц (добавление N к каждому вставке и т. Д.). – Leo