Apa praktik terbaik pemrosesan Unicode di C ++?
Apa praktik terbaik pemrosesan Unicode di C ++?
Jawaban:
is_alpha
kecuali itu adalah definisi yang Anda inginkan.string
jika Anda peduli dengan kebenaran, selalu gunakan perpustakaan unicode Anda untuk ini.Jika Anda tidak peduli tentang kompatibilitas mundur dengan standar C ++ sebelumnya, standar C ++ 11 saat ini telah dibangun di dukungan Unicode: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011 /n3242.pdf
Jadi praktik terbaik untuk pemrosesan Unicode di C ++ adalah menggunakan fasilitas bawaan untuk itu. Itu tidak selalu menjadi kemungkinan dengan basis kode yang lebih lama, dengan standar yang sangat baru saat ini.
EDIT: Untuk memperjelas, C ++ 11 adalah Unicode yang sekarang memiliki dukungan untuk literal Unicode dan string Unicode. Namun, pustaka standar hanya memiliki dukungan terbatas untuk pemrosesan dan konversi Unicode. Untuk kebutuhan Anda saat ini mungkin sudah cukup. Namun, jika Anda perlu melakukan banyak pekerjaan berat sekarang, Anda mungkin masih perlu menggunakan sesuatu seperti ICU untuk pemrosesan yang lebih mendalam. Ada beberapa proposal yang saat ini sedang dikerjakan untuk menyertakan dukungan yang lebih kuat untuk konversi teks di antara berbagai encoding. Dugaan saya (dan harapan) adalah bahwa ini akan menjadi bagian dari laporan teknis selanjutnya .
Perusahaan kami (dan lainnya) menggunakan pustaka Komponen Internasional untuk Unicode (ICU) sumber terbuka yang awalnya dikembangkan oleh Taligent.
Ini menangani string, lokal, konversi, tanggal / waktu, pemeriksaan, transformasi, et. Al.
Mulailah dengan ICU Userguide
Berikut adalah daftar periksa untuk pemrograman Windows:
Lihat perbandingan string tidak sensitif huruf besar / kecil di C ++
Pertanyaan itu memiliki tautan ke dokumentasi Microsoft di Unicode: http://msdn.microsoft.com/en-us/library/cc194799.aspx
Jika Anda melihat di sisi kiri navigasi pada MSDN di samping artikel tersebut, Anda akan menemukan banyak informasi yang berkaitan dengan fungsi Unicode. Ini adalah bagian dari bab tentang "Encoding Characters" ( http://msdn.microsoft.com/en-us/library/cc194786.aspx )
Ini memiliki subbagian berikut:
Meskipun ini mungkin bukan praktik terbaik untuk semua orang, Anda dapat menulis rutinitas C ++ UNICODE Anda sendiri jika Anda mau!
Saya baru saja selesai melakukannya selama akhir pekan. Saya belajar banyak, meskipun saya tidak menjamin 100% bebas bug, saya melakukan banyak pengujian dan tampaknya berfungsi dengan benar.
Kode saya di bawah lisensi BSD Baru dan dapat ditemukan di sini:
http://code.google.com/p/netwidecc/downloads/list
Ini disebut WSUCONV dan dilengkapi dengan contoh program main () yang mengkonversi antara UTF-8, UTF-16, dan Standard ASCII. Jika Anda membuang kode utama, Anda memiliki perpustakaan yang bagus untuk membaca / menulis UNICODE.
Seperti yang telah dikatakan di atas, perpustakaan adalah pilihan terbaik saat menggunakan sistem besar. Namun kadang-kadang Anda ingin menangani sendiri sesuatu (mungkin karena perpustakaan akan menggunakan banyak sumber daya seperti pada pengontrol mikro). Dalam hal ini Anda menginginkan perpustakaan sederhana yang Anda dapat menyalin bagian-bagiannya untuk hal-hal yang sebenarnya Anda butuhkan.
Kode contoh Willow Schlanger sepertinya bagus (lihat jawabannya untuk lebih jelasnya).
Saya juga menemukan satu sama lain yang memiliki kode lebih kecil, tetapi tidak memiliki pemeriksaan kesalahan penuh dan hanya menangani UTF-8 tetapi lebih sederhana untuk mengambil bagian darinya.
Berikut daftar pustaka tertanam yang tampaknya layak.
Gunakan Komponen Internasional IBM untuk Unicode
Lihat rekomendasi UTF-8 Everywhere
string
sebagai data biner.