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

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

问题描述:

我有一个多行文本框,它接受来自任何语言的任何文本并将其存储到数据库中供以后使用。无法将外来文本保存到具有nvarchar字段的SQL Server数据库表中

我使用Linq和ASP .NET 3.5与SQL Server 2005数据库。

任何/所有信息,你可以提供给我是非常赞赏:d

+1

绊而究竟是什么的问题,你遇到? – Oded 2010-04-02 17:46:32

+0

例如:在进入数据库的途中,中国在文本框中仅有2个框(在调试过程中观察到)。当这些数值被返回并显示时,它们会变成“??”。 – Veaudoo 2010-04-02 20:22:31

了大量的研究和微动后,我发现了一些东西,我拼凑起来的,用来拿出我的终极解决方案。这处理能够插入任何我可以扔在它的字符:

我创建了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

+0

我会看看,看看我能找到什么。谢谢:) – Veaudoo 2010-04-02 20:19:49

+0

这里是一个场景: 我有一个DetailsView,通过ObjectDataSource从数据库中选择/更新数据。 我编辑数据并保存包含“中国”的字符串。 当数据显示在ItemTemplate中时,显示“??” “中国”在字符串中。 当我检查实际保存到数据库字段的值时,它是“??”。 在调试时,我可以看到它在“中国”应该在的地方传递方形/矩形字符。 – Veaudoo 2010-04-03 03:27:37