【问题标题】:Character problem in ISAPI application (ő,ű)ISAPI 应用程序中的字符问题 (ő,ű)
【发布时间】:2018-10-24 09:17:59
【问题描述】:

我有一个 Windows 2016 服务器操作系统和一个 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]

这个表只有一行, 并且所有单元格的值都是 'őőŐŐűűŰŰööÖÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ' 字符串。

我在Delphi中写了一个exe程序,一个简单的dll程序和一个isapi dll程序。 所有程序都包含一个程序。此过程包含从 temp_table 读取的查询。之后,程序将值写入 txt 文件。

我的exe程序调用程序:

  1. 直接
  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,值:őőŐŐűűŰŰööÖÖüüÜÜÜóÓÓúúÚÚééÉÉááÁÁ

列类型varchar_max,值:ooOOuuUUööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

列类型 nvarchar_250,值:ooOOuuUUööÖÖüüÜÜóÓÓúúÚÚééÉÉááÁÁ

列类型 nvarchar_4000,值:ooOOuuUUööÖÖüüÜÜóÓÓÓúÚÚééÉÉááÁÁ

列类型 nvarchar_max,值:ooOOuuUUööÖÖüüÜÜóóÓÓúúÚÚééÉÉááÁÁ

在 1-3 种情况下,该过程由我的用户调用,在最后一种情况下,该过程由 IIS 调用。

最后一个案例有什么问题?

提前感谢您的帮助

【问题讨论】:

  • 您只显示2个案例,所有值都相同。
  • 不,第二次运行似乎松开了最后 4 种 varchar 类型的双前向变音符号。回答这个问题所缺少的更多是关于上下文:如何从 Delphi 调用过程,并在数据模块上存储过程对象?至少一些代码会很有帮助。

标签: sql-server delphi iis isapi


【解决方案1】:

让你的 varchar 大小乘以 2。所以 varchar(250) 将变为 varchar(500)。不确定内部结构,但会解决问题。

【讨论】:

  • 不幸的是我必须使用 varchar(max) 和 nvarchar(max) 类型,我不能限制输入的长度。无论如何,在以下情况下我的问题不存在: 操作系统:Windows 10 家庭版或 Windows Server 2008 或 Windows Server 2012 数据库:MSSQL 2008 或 MSSQL 20014 我不明白为什么它在 Windows 2016 和 MSSQL 2017 或 MSSQL 2014 中不起作用我认为责任是IIS ISAPI模块,但我不知道该怎么办。
猜你喜欢
  • 2019-07-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
相关资源
最近更新 更多