Проблема символов в приложении ISAPI (ő, ű) - PullRequest
0 голосов
/ 24 октября 2018

У меня ОС Windows 2016 Server и база данных MSSQL 2017.

Моя таблица выглядит следующим образом:

CREATE TABLE [dbo].[temp_table](
[varchar_250] [varchar](250) NULL,
[varchar_4000] [varchar](4000) NULL,
[varchar_max] [varchar](max) NULL,
[nvarchar_250] [nvarchar](250) NULL,
[nvarchar_4000] [nvarchar](4000) NULL,
[nvarchar_max] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

В этой таблице одна строка, и значение всех ячеек равно 'stringööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ '.

Я написал exe-программу, простую dll-программу и isapi dll-программу в Delphi.Вся программа включает в себя одну процедуру.Эта процедура содержит запрос, который читается из таблицы temp_table.После этого процедура записывает значения в текстовый файл.

Моя exe-программа вызывает процедуру:

  1. Direct
  2. Из простых DLL
  3. Из isapi dll в качестве внешней процедуры

Результат всегда следующий в 1-3:

тип столбца varchar_250, значение: őőŐŐűűŰŰööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

тип столбца varchar_4000,значение: őőŐŐűűŰŰööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

тысяча двадцать пять * колонок тип varchar_max, значение: őőŐŐűűŰŰööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

колонок типа nvarchar_250, значение: őőŐŐűűŰŰööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

колонок типа nvarchar_4000, значение: őőŐŐűűŰŰööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

тысяча тридцать-один * типа столбецnvarchar_max, значение: őőŐŐűűŰŰööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

Однако, когда я загружаю isapi dll в браузер, программа делаетке текстовый файл, но данные неверны:

тип столбца varchar_250, значение: őőŐŐűűŰŰööÖÖüüÜÜóóÓÓúúÚÚééÉÉáÁÁ

тип столбца varchar_4000, значение: őőŐŐűűŰŰööÖÖüüÜÜóóúúúÚÚéé * 10 * тип * столбецooOOuuUUööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ * +1040 * * * колонок тысячи сорок один типом nvarchar_250, значение: ooOOuuUUööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ * * * тысяча сорок-дв +1043 * колонок типа nvarchar_4000, значение: ooOOuuUUööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

* * колонок тысячи сорок-пять тип nvarchar_max, значение: ooOOuuUUööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ * * * тысяча сорок-шести 1047 * В 1-3В случаях, когда процедура вызывается моим пользователем, в последнем случае процедура вызывается IIS.

В чем проблема в последнем случае?

Заранее спасибо за помощь

1 Ответ

0 голосов
/ 27 октября 2018

умножьте размер varchar на 2., чтобы varchar (250) стал varchar (500).не уверен насчет внутренних функций, но решу проблему.

...