Bagikan melalui


Penerjemahan Otomatis Data Karakter

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Data karakter, seperti variabel karakter ANSI yang dideklarasikan dengan SQL_C_CHAR atau data yang disimpan dalam SQL Server menggunakan jenis data karakter, varchar, atau teks, hanya dapat mewakili sejumlah karakter terbatas. Data karakter yang disimpan menggunakan satu byte per karakter hanya dapat mewakili 256 karakter. Nilai yang disimpan dalam variabel SQL_C_CHAR ditafsirkan menggunakan halaman kode ANSI (ACP) komputer klien. Nilai yang disimpan menggunakan tipe data karakter, varchar, atau teks di server dievaluasi menggunakan ACP server.

Jika server dan klien memiliki ACP yang sama, maka mereka tidak memiliki masalah dalam menafsirkan nilai yang disimpan dalam objek SQL_C_CHAR, char, varchar, atau teks . Jika server dan klien memiliki ACL yang berbeda, maka SQL_C_CHAR data dari klien dapat ditafsirkan sebagai karakter yang berbeda di server jika digunakan dalam kolom karakter, varchar, atau teks , variabel, atau parameter. Misalnya, byte karakter yang berisi nilai 0xA5 ditafsirkan sebagai karakter Ñ di komputer menggunakan halaman kode 437 dan ditafsirkan sebagai tanda yen (¥) pada komputer yang menjalankan halaman kode 1252.

Data Unicode disimpan menggunakan dua byte per karakter. Semua karakter yang diperluas dicakup oleh spesifikasi Unicode, sehingga semua karakter Unicode ditafsirkan sama oleh semua komputer.

Fitur AutoTranslate dari driver SQL Server Native Client ODBC mencoba meminimalkan masalah dalam memindahkan data karakter antara klien dan server yang memiliki halaman kode yang berbeda. AutoTranslate dapat diatur dalam string sambungkan SQLDriverConnect, dalam string konfigurasi SQLConfigDataSource, atau saat mengonfigurasi sumber data untuk driver SQL SERVER NATIVE CLIENT ODBC menggunakan Administrator ODBC.

Ketika AutoTranslate diatur ke "tidak", tidak ada konversi yang dilakukan pada data yang dipindahkan di antara variabel SQL_C_CHAR pada klien dan kolom, varchar, atau kolom teks, variabel, atau parameter dalam database SQL Server. Pola bit dapat ditafsirkan secara berbeda pada komputer klien dan server jika data berisi karakter yang diperluas dan kedua komputer memiliki halaman kode yang berbeda. Data akan ditafsirkan sama jika kedua komputer memiliki halaman kode yang sama.

Ketika AutoTranslate diatur ke "ya", driver SQL Server Native Client ODBC menggunakan Unicode untuk mengonversi data yang dipindahkan antara variabel SQL_C_CHAR pada klien dan kolom karakter, varchar, atau teks, variabel, atau parameter dalam database SQL Server:

  • Ketika data dikirim dari variabel SQL_C_CHAR pada klien ke kolom karakter, varchar, atau teks, variabel, atau parameter dalam database SQL Server, driver ODBC terlebih dahulu mengonversi dari SQL_C_CHAR ke Unicode menggunakan ACP klien, lalu dari Unicode kembali ke karakter menggunakan ACP server.

  • Ketika data dikirim dari karakter, varchar, atau kolom teks, variabel, atau parameter dalam database SQL Server ke variabel SQL_C_CHAR pada klien, driver SQL SERVER NATIVE CLIENT ODBC terlebih dahulu mengonversi dari karakter ke Unicode menggunakan ACP server, lalu dari Unicode kembali ke SQL_C_CHAR menggunakan ACP klien.

Karena semua konversi ini dilakukan oleh driver SQL Server Native Client ODBC yang dijalankan pada klien, ACP server harus menjadi salah satu halaman kode yang diinstal pada komputer klien.

Melakukan konversi karakter melalui Unicode memastikan konversi yang tepat dari semua karakter yang ada di kedua halaman kode. Namun, jika karakter ada dalam satu halaman kode tetapi bukan yang lain, maka karakter tidak dapat diwakili di halaman kode target. Misalnya, halaman kode 1252 memiliki simbol merek dagang terdaftar (®), sedangkan halaman kode 437 tidak.

Pengaturan AutoTranslate tidak berpengaruh pada konversi ini:

  • Memindahkan data antara variabel klien SQL_C_CHAR karakter dan kolom, variabel, atau parameter Unicode nchar, nvarchar, atau ntext dalam database SQL Server.

  • Memindahkan data antara unicode SQL_C_WCHAR variabel klien dan karakter char, varchar, atau kolom teks, variabel, atau parameter dalam database SQL Server.

Data harus selalu dikonversi saat dipindahkan dari karakter ke Unicode.

Lihat juga

Hasil Pemrosesan (ODBC)
Kolajeasi dan Dukungan Unicode