Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UTF-8、经典ASP和SQL Server_Sql_Asp.net_Sql Server_Encoding_Utf 8 - Fatal编程技术网

UTF-8、经典ASP和SQL Server

UTF-8、经典ASP和SQL Server,sql,asp.net,sql-server,encoding,utf-8,Sql,Asp.net,Sql Server,Encoding,Utf 8,我有一个奇怪的问题,这让我很困惑 我正在致力于web应用程序的国际化,并全面实施UTF-8 该应用程序在经典ASP中有很多遗留代码,目前运行良好 让我困惑的是以下几点 从应用程序的管理端,我保存此字符串以测试特殊字符: Á, É, Í, Ó, Ú, Ü, Ñ ± ' Z Ž 如果运行SQL Server探查器,则看不到插入的Ž字符 如果我对运行更新的查询执行Response.Write,则字符就在那里 如果我试图编辑从web前端保存的内容,则角色就在那里 如果我检查正在编辑的页面的HTML源代

我有一个奇怪的问题,这让我很困惑

我正在致力于web应用程序的国际化,并全面实施UTF-8

该应用程序在经典ASP中有很多遗留代码,目前运行良好

让我困惑的是以下几点

从应用程序的管理端,我保存此字符串以测试特殊字符:

Á, É, Í, Ó, Ú, Ü, Ñ ± ' Z Ž
如果运行SQL Server探查器,则看不到插入的Ž字符

如果我对运行更新的查询执行Response.Write,则字符就在那里

如果我试图编辑从web前端保存的内容,则角色就在那里

如果我检查正在编辑的页面的HTML源代码,则使用Server.HTMLEncode将字符正确编码为HTML

如果从SQLServerManagementStudio运行select查询,则看不到该字符

我有html元标记来设置UTF-8

 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
文件以UTF-8编码保存

为什么角色在SQL Server Profiler或查询中不可见,但如果我从前端执行此操作,角色就在那里

我使用N前缀在SQL Server中保存unicode,列的类型为nvarchar128

然后,从具有相同设置的系统的另一部分开始,如果我尝试执行相同的操作,则在执行插入操作时,角色是可见的


有什么想法吗?

为什么那根绳子不在里面?如何将它从客户端窗体精确地获取到update命令?您是否尝试过使用存储过程并传递强类型参数而不是构建字符串?您是否尝试将此特定字符移动到转义撇号之前?您确定该列是128个字符而不是128个字节64个字符吗?另外,请注意,SQL Server不支持UTF-8。我想SQL Server会将utf8编码的字符转换为ucs2。可能您的应用程序使用windows1252,Ž是唯一缺少的字符。您可以尝试选择convertvarbinary,yourfield查看数据库中实际存储的内容。并查看从不同环境插入的字符串之间的差异。