我有一个关于使用asp.net在SQL的配置文件表中存储特殊字符(变音符号,德语字符等)的问题。
我们通过表单提交将此信息提供给另一个数据库,我们发现当这些字段到达最终数据库时,某些字符(如ö或ä等)作为其ascii代码(如ä
和{{}进入1}}。
我回顾了aspnet_Profile表并查找了源数据,发现这些字符已经存储在数据库中。
我的问题是。有没有办法在sql server中将这些字符存储为ö或ä,或者当我将它们从配置文件中拉出以显示在网页上并插入到最终数据库中时,是否需要编码/解码(哪个?)? Oracle并且可以处理这些字符。)
如果我必须对配置文件表中的每个字段进行编码/解码,我是否在将数据提交到配置文件时执行此操作?或者当我从网站/记录插入到Oracle的配置文件中检索数据时?
抱歉,如果这是一个新手问题,但我是新手!
答案 0 :(得分:0)
问题是如果您直接构建SQL而不是使用参数传递值。
如果您构建一个INSERT语句,如:
string cmd = string.Format("INSERT INTO FOO (col) VALUES ({0})", value);
Oracle可能没有意识到您传入的是Unicode字符串并将其转义。这也让你对潜在的SQL注入攻击持开放态度,但这是另一回事。
您需要为传递到数据库的任何值使用参数。例如:
using (var conn = new OracleConnection(connectionString)) {
using (var command = new OracleCommand("INSERT INTO FOO (col) VALUES (?)")) {
command.Connection = conn;
command.Parameters.AddWithValue("?", value);
command.ExecuteNonQuery();
}
}