"f…¤1)iÔfÞ5wõQ‹¹" örnek olarak bu metni ben sql server'da bir table'a kaydetmek istiyorum. Kayıt yapılıyor fakat bazı karakterler yanlış kaydediliyor. "�" gibi değişik karakterler olarak kaydediliyor.
SQL Server Collation: SQL_Latin1_General_CP1_CI_AS olarak ayarlı.
Collation degisikligi yapmak gerek, MSSQL 'de tam olarak neye karsilik geldigini bilmesem de UTF8 ' in bir versiyonu isinizi gorecektir. Insert edeceginiz karakterler utf8 encoding'inde tanimli ise tabi. Bu arada CI da case sensitive demekti yanlis hatirlamiyorsam, yani sizin business modele gore bir Collation belirlemelisiniz.
Biraz araştırdım fakat MsSql'de UTF-8 desteğinin olmadığını öğrendim. Aslında benim veri tabanım azure'da. UTF-8 desteği olan başka bir sağlayıcıya geçmem mi gerekiyor acaba? İngilizce kaynaklarda alternatif olarak verileri binary olarak saklayabileceğim yazıyordu. Acaba onu mu denemeliyim? Konu hakkında çok bilgi sahibi değilim kusura bakmayın. :D
Ben de mssql , azure vs hakkinda bilgili degilim. Ama utf8 in olmamasi bana cok sacma geldi. Kesin vardir. Collation olarak secebilecegin alternatifler neler acaba, var mi elinde bir listesi benim gorebilecegim ?
Elimde liste yok ama Management Studio'da bayağı uzun bir liste var ama onu da buraya yazamam. İçindekilerden bazıları şunlar: SQL_1xCompat_CP850_CL_AS, SQL_Latin1_General_CP1_Cl_Al, Latin1_General_100_BIN vb... < Resime gitmek için tıklayın >
< Bu mesaj bu kişi tarafından değiştirildi omrumbakitemiz -- 14 Nisan 2016; 15:04:47 >
DB'nin collation'ini sectikten sonra yarattigin tablolar DB'den aliyor collation'i. Ben utf8 ile denedim oldu. Sen muhtemelen once table create ettin, sonra degistirdin, tablonun collation'i latin'de kaldi. < Resime gitmek için tıklayın >
Konu hakkında çok bilgim yok ama ben şöyle birşey yapardım muhtemelen. Unicode karaktere çevirirdim, \u1505 tarzı bir sayı çıkardı ortaya, onu da bu şekilde DB'ye kaydederdim, tekrar alırken de karaktere çevirip gösterirdim.
Belki karakterin utf8 altında bir karşılığı olmayabilir. Çok abuk sabuk bir karakter yollarsın utf8'de tanımlı olmaz. Bu yüzden sen en iyisi utf32 yap bu dertten kurtul. Yani böyle bir hata ile karşılaşmaya devam edersen diye söylüyorum
UTF32'de her karater daha fazşa yer kaplar ve ciddi bir miktar olduğunu söylebilirim
Örnek: Orhun alfabesindeki karakterler utf16'dan itibaren kayıtlı
SQL Server Collation: SQL_Latin1_General_CP1_CI_AS olarak ayarlı.