You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C# ASP.NET参数向SQL Server插入希伯来文本避免乱码

问题根因
  • 原有代码使用SqlDbType.Varchar作为参数类型,该类型为单字节编码,不支持希伯来语等Unicode字符,是导致存储后显示为?????的核心原因
  • 两次修改SQL的写法不符合参数化查询规则:N'@word'会将@word识别为字符串常量而非参数,N'@word'N属于SQL语法错误
正确修改方案
  1. 首先确认数据库MyTable表的word字段类型为NVarchar/NChar等Unicode存储类型,若字段本身为Varchar需要先修改字段类型
  2. 修改代码中的参数类型为SqlDbType.NVarChar,SQL语句无需额外加N前缀,修正后的代码如下:
myCommand.CommandText = "INSERT INTO MyTable(word) VALUES (@word);";
// 将参数类型从Varchar修改为NVarChar
myCommand.Parameters.Add(new SqlParameter("@word", SqlDbType.NVarChar, 50));
// 注意原有代码变量名不统一,前面定义的是myCommand,不要误写为command
myCommand.Parameters["@word"].Value = words_array[i];
额外说明

参数化查询场景下,只要参数指定了NVarChar类型,SQL Server会自动处理Unicode编码,不需要在SQL语句中手动加N前缀。手动给参数加单引号会导致参数失效,被识别为普通字符串。

内容的提问来源于stack exchange,提问作者user17135324

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:45:05