无法将外部文本保存到具有nvarchar字段的SQL Server数据库表

时间:2010-04-02 17:44:34

标签: asp.net linq-to-sql internationalization

我要求有一个多行文本框,可以接受来自任何语言的任何文本,并将其存储到数据库中供以后使用。

我正在使用Linq和ASP .NET 3.5以及SQL Server 2005数据库。

非常感谢您提供给我的任何/所有信息:D

2 个答案:

答案 0 :(得分:0)

您需要对文本进行编码和解码,具体取决于您是在更新/插入还是查看数据。

查看System.Text.Encoding

答案 1 :(得分:0)

经过大量的研究和烦恼后,我找到了一些拼凑起来的东西,并用来提出我的终极解决方案。这处理能够插入任何我可以抛出的角色:

我创建了两种方法来处理我想要解决的两个场景。

从用户界面进入数据库。 我确保我的网页采用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;
    }

我真的希望这可以帮助那些可能在同一问题上遇到困难的其他人:)