it-swarm.asia

SQL Server 2005/2008 UTF-8 Collation / Charset

Saya tidak dapat menemukan opsi secara langsung untuk mengatur UTF-8 rellated Collations/Charsets dalam SQL Server 2005/2008, sama seperti mungkin untuk diatur dalam mesin SQL lain, tetapi dalam SQL Server 2005/2008 hanya ada koleksi Latin dan SQL.

Apakah ada beberapa opsi untuk memaksa/menginstal collations/charset ini dalam mesin SQL Server (untuk keduanya ver.) 2005/2008 pada Win2008 OS

16
mKorbel

Tidak, tidak ada. SQL Server tidak mendukung UTF-8.

Anda perlu mendefinisikan kolom Anda sebagai nvarchar/nchar jika Anda menginginkan data unikode. Catatan, secara internal SQL Server menyimpan ini sebagai UCS-2.

Perhatikan bahwa ini telah diminta dari MS on Connect dan ada artikel KB yang lebih lama . Dan beberapa info di blog ini juga

13
gbn

Anda tidak dapat menginstal UTF-8 sebagai set karakter karena itu bukan set karakter, ini adalah encoding.

Jika Anda ingin menyimpan teks Unicode, Anda menggunakan tipe data nvarchar.

Jika Anda ingin menyimpan teks yang disandikan menggunakan UTF-8, Anda menyimpannya sebagai data biner (varbinary).

2
Guffa

Mulai di SQL Server 2019 (saat ini dalam versi beta/"Pratinjau Teknologi Komunitas"), ada dukungan asli untuk UTF-8 melalui serangkaian baru kumpulan UTF-8. NAMUN, memiliki kemampuan untuk menggunakan UTF-8 tidak bukan berarti bahwa kamu harus. Ada beberapa kekurangan untuk menggunakan UTF-8, seperti:

  1. Hanya 128 poin kode pertama yang 1 byte (mis. Standar 7-bit ASCII set)
  2. Hampir 2000 poin kode berikutnya adalah 2 byte, karenanya tidak ada penghematan ruang pada UTF-16/NVARCHAR
  3. Poin kode 63k yang tersisa dalam BMP (yaitu kisaran U + 0800 - U + FFFF) semuanya 3 byte, karenanya 1 byte lebih besar daripada yang sama karakter dalam UTF-16/NVARCHAR.
  4. Katakan saja: Karakter Tambahan adalah 4 byte di kedua pengkodean, jadi tidak ada perbedaan ruang di sana
  5. Meskipun Anda dapat menghemat ruang menggunakan UTF-8, ada peluang yang sangat baik bahwa Anda akan terpukul kinerja untuk melakukannya.

Apa yang sebenarnya terjadi adalah ini: UTF-8 adalah desain format penyimpanan untuk mengaktifkan sistem 8-bit (yang biasanya dirancang sekitar ASCII dan ASCII Extended - Code Pages) untuk menggunakan Unicode tanpa merusak apa pun atau memerlukan modifikasi file apa pun yang ada untuk menjaga hal-hal berjalan. UTF-8 sangat bagus untuk sistem file dan jaringan, tetapi data disimpan di dalam SQL Server juga tidak. Fakta bahwa data yang kebetulan kebanyakan (atau seluruhnya) dalam standar ASCII rentang membutuhkan lebih sedikit ruang daripada data yang sama ketika disimpan sebagai UTF-16/NVARCHAR adalah efek samping. Tentu, ini adalah efek samping yang terbukti bermanfaat, tetapi keputusan itu harus dibuat oleh seseorang yang mengerti kedua data dan konsekuensi/kekurangan dari keputusan ini. Ini adalah bukan fitur untuk penggunaan umum.

Juga, use case utama untuk UTF-8 (dalam SQL Server) adalah untuk kode aplikasi yang sudah menggunakan UTF-8, mungkin sudah dengan RDBMS lain yang mendukungnya, dan tidak ada keinginan atau kemampuan untuk memperbarui kode aplikasi/skema DB untuk menggunakan NVARCHAR tipe data (untuk tabel, variabel, parameter, dll), atau untuk mengawali string literal dengan huruf besar "N". Tujuannya sama dengan alasan UTF-8 yang ada: memungkinkan kode aplikasi untuk menggunakan Unicode tanpa mengubah struktur keseluruhan atau membuat data yang ada tidak valid. Jika ini menggambarkan situasi Anda, maka gunakan UTF-8, tetapi perlu diketahui bahwa masih ada beberapa bug/masalah dengan itu.

Jika Anda tidak memiliki kebutuhan eksplisit untuk Unicode yang berfungsi tanpa menggunakan NVARCHAR atau huruf kapital string awalan "N", maka satu-satunya skenario lain di mana manfaat UTF-8 adalah jika Anda memiliki BANYAK mostly standar ASCII data yang perlu untuk memungkinkan karakter Unicode, dan Anda menggunakan NVARCHAR(MAX) (yang berarti bahwa kompresi data tidak akan berfungsi), dan tabel akan sering diperbarui (jadi Indeks Columnstore Clustered mungkin tidak akan benar-benar membantu).

Untuk detail lengkap, silakan lihat posting saya:

Dukungan UTF-8 Asli di SQL Server 2019: Juruselamat atau Nabi Palsu?

1
Solomon Rutzky

Saya kasus saya, saya harus menampilkan karakter Arab dan database pengembangan saya pada tahun 2014, di sini semuanya bekerja dengan baik. Di sini, dalam kueri saya bisa melihat karakter bahasa Arab dan collation saya adalah SQL_Latin1_General_CP1256_CI_AS

Tapi produksi saya di SQL server 2008 dan akhirnya tidak didukung charset UTF-8. Di sini, saya bisa melihat semua ??????????? karena UTF-8 tidak didukung dalam SQL 2008.

Apa yang saya lakukan adalah mengubah semua varchar menjadi nvarchar dan saya bisa melihat char Arab dengan benar. Saya juga mengubah susunan basis data 2008 saya menjadi SQL_Latin1_General_CP1256_CI_AS

0
Halim