无法使用LINQ将韩文字符串存储在数据库中

时间:2010-02-22 07:11:12

标签: asp.net sql-server database vb.net linq-to-sql

我正在使用此代码在我的数据库中存储韩文字符串:


Dim username As String = Request.QueryString.Get("Some Korean String")
Using dg As New DataContext()
Dim newfriend As New FriendsTable With {.AskingUser = User.Identity.Name, .BeingAskedUser = username, .Pending = True}
dg.FriendsTables.InsertOnSubmit(newfriend)
dg.SubmitChanges()
end using
检查我的数据库,存储的用户名是一个字符串“????”... 任何人都知道这是怎么发生的或任何变通方法?

2 个答案:

答案 0 :(得分:1)

您的数据库整理是什么?您是否能够使用任何其他数据访问技术存储韩语字符串?用户名列的类型是什么,它是否在LINQ to SQL中准确映射?

我怀疑数据库中的某些未正确设置以允许完整的Unicode。我非常怀疑这与LINQ本身有什么关系。

要检查的另一件事是,您实际上是首先获得正确的数据。通常会有几个地方出现问题 - 您需要分别验证每个地方以查看数据被破坏的位置。我有short article on this您可能会觉得有帮助。

答案 1 :(得分:0)

听起来您正在将韩文文本存储在varchar / text列中,而该列未使用韩语排序规则。最简单的解决方法是将列类型更改为nvarchar / ntext。

nchar列类型存储Unicode数据,而char and varchar类型存储指定排序规则中的单字节字符。