无法将外来文本保存到具有nvarchar字段的SQL Server数据库表中
问题描述:
我有一个多行文本框,它接受来自任何语言的任何文本并将其存储到数据库中供以后使用。无法将外来文本保存到具有nvarchar字段的SQL Server数据库表中
我使用Linq和ASP .NET 3.5与SQL Server 2005数据库。
任何/所有信息,你可以提供给我是非常赞赏:d
答
了大量的研究和微动后,我发现了一些东西,我拼凑起来的,用来拿出我的终极解决方案。这处理能够插入任何我可以扔在它的字符:
我创建了2个方法来处理我想要解决的2个场景。
第一次从用户界面进入数据库。 我确定我的网页正在运行Unicode(utf-8)编码内容类型。
public string unicodeToIso(string InStr)
{
if (InStr != null)
{
Encoding iso = Encoding.GetEncoding(1252);
Encoding unicode = Encoding.Unicode;
byte[] unicodeBytes = unicode.GetBytes(InStr);
return iso.GetString(unicodeBytes);
}
else
return null;
}
然后我处理了数据返回到用户界面。
public string isoToUnicode(string InStr)
{
if (InStr != null)
{
// I originally used the string: "iso8859-1" instead of 1252
// 1252 helped 'catch' ALL of the Chinese characters as opposed to most
Encoding iso = Encoding.GetEncoding(1252);
Encoding unicode = Encoding.Unicode;
byte[] isoBytes = iso.GetBytes(InStr);
return unicode.GetString(isoBytes);
}
else
return null;
}
我真的希望这可以帮助其他人在那里,可在这个同样的问题:)
答
你需要进行编码和解码取决于如果您要更新/插入或查看数据的文本。
看System.Text.Encoding
绊而究竟是什么的问题,你遇到? – Oded 2010-04-02 17:46:32
例如:在进入数据库的途中,中国在文本框中仅有2个框(在调试过程中观察到)。当这些数值被返回并显示时,它们会变成“??”。 – Veaudoo 2010-04-02 20:22:31