0


0

LINQを使用して韓国語の文字列をデータベースに保存できない

私はこのコードを使用して、韓国語の文字列をデータベースに保存しています。

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 Answer


1


データベースの照合は何ですか? 他のデータアクセステクノロジーで韓国語の文字列を保存できますか? ユーザー名列のタイプは何ですか?また、LINQ to SQLで正確にマップされていますか?

データベースの_something_が完全にUnicodeを許可するように正しくセットアップされていないのではないかと思います。 これがLINQ自体と関係があることは非常に疑わしいです。

もう1つ確認すべきことは、そもそも実際に正しいデータを取得していることです。 多くの場合、問題が発生する可能性のある場所がいくつかあります。データが破損している場所を確認するには、各場所を個別に検証する必要があります。 http://pobox.com/~skeet/csharp/debuggingunicode.html [これに関する短い記事]がありますので、参考にしてください。


0


韓国語の照合順序を使用していないvarchar / text列に韓国語のテキストを保存しているようです。 最も簡単な修正方法は、列タイプをnvarchar / ntextに変更することです。

nchar列タイプにはUnicodeデータが格納されますが、http://msdn.microsoft.com/en-us/library/ms176089.aspx [charおよびvarchar]タイプは、指定された照合にシングルバイト文字を格納します。