【问题标题】:Can't store a korean string in database using LINQ无法使用 LINQ 在数据库中存储韩语字符串
【发布时间】:2011-01-19 13:02:09
【问题描述】:

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


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
检查我的数据库,存储的用户名是一个字符串“??????”... 有人知道这是怎么发生的或任何解决方法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您的数据库排序规则是什么?您是否可以使用任何其他数据访问技术存储韩语字符串?用户名列的类型是什么,在 LINQ to SQL 中是否准确映射?

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

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

      【讨论】:

      • .beingaskeduser 列在 varchar 中......并且代码正在处理字母数字字符串,但是当我得到一个韩文字符串时,就会发生这种情况
      猜你喜欢
      • 2016-11-01
      • 1970-01-01
      • 2021-10-11
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多