Konversi dari data Unicode ke Halaman Kode tertentu menggunakan apa yang dikenal sebagai strategi "Paling Cocok" (seperti yang tercantum dalam jawaban @ Paul dan di tautan yang dicatat oleh @Martin dalam komentar pada Pertanyaan). Menurut halaman MSDN untuk Pengodean Karakter di .NET Framework :
Pemetaan paling cocok adalah perilaku default untuk objek Pengkodean yang menyandikan data Unicode ke dalam data halaman kode ...
Tapi apa sebenarnya pemetaan ini? Halaman MSDN yang digunakan untuk menyatakan sebagai berikut:
Strategi paling cocok bervariasi untuk halaman kode yang berbeda, dan mereka tidak didokumentasikan secara rinci.
Namun, itu tidak sepenuhnya benar. Mungkin "strategi" untuk menentukan pemetaan tidak terdokumentasi dengan tepat. Baik. Tapi, pemetaan sendiri yang didokumentasikan, hanya saja tidak dalam termudah tempat untuk menemukan.
Jadi, berkat Microsoft memindahkan dokumentasi ke GitHub, halaman itu sekarang menyatakan yang berikut (karena saya memperbaruinya 😸):
Strategi terbaik tidak didokumentasikan secara rinci. Namun, beberapa halaman kode didokumentasikan di situs web Konsorsium Unicode . Harap tinjau file readme.txt di folder itu untuk deskripsi cara menafsirkan file pemetaan.
Jika Anda membuka URL berikut, Anda akan melihat daftar beberapa file, masing-masing diberi nama untuk Halaman Kode yang memetakan karakter Unicode ke:
ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/
Sebagian besar file terakhir diperbarui (atau setidaknya ditempatkan di sana) pada 2006-10-04, dan salah satunya diperbarui pada 2012-03-14. Bagian pertama dari file-file tersebut memetakan kode ASCII ke dalam Unicode Code Point yang setara. Tetapi bagian kedua dari setiap file memetakan karakter Unicode ke "padanan" ASCII mereka.
Saya menulis skrip pengujian yang menggunakan pemetaan Kode untuk memeriksa apakah SQL Server benar-benar menggunakan pemetaan tersebut. Itu dapat ditentukan dengan menjawab dua pertanyaan ini:
- Untuk semua Poin Kode yang dipetakan, apakah SQL Server mengubahnya menjadi pemetaan yang ditentukan?
- Untuk semua Poin Kode yang belum dipetakan, apakah SQL Server mengonversinya menjadi karakter bukan "
?
"?
Script tes terlalu panjang untuk ditempatkan di sini, jadi saya mempostingnya di Pastebin di:
Pemetaan Unicode ke Halaman Kode di SQL Server
Menjalankan skrip akan menunjukkan bahwa jawaban untuk pertanyaan pertama di atas adalah "Ya" (artinya semua pemetaan yang disediakan dipatuhi). Ini juga akan menunjukkan bahwa jawaban untuk pertanyaan kedua adalah "Tidak" (artinya, tidak ada Poin Kode yang tidak dipetakan yang dikonversi menjadi apa pun selain karakter untuk "tidak dikenal"). Karenanya, file pemetaan itu sangat akurat :-).