Soalan ini adalah tentang mendapatkan mata kod UCS-2 untuk rentetan UTF-8 yang diberikan. Tugasnya adalah untuk menukar aksara individu kepada titik kod UCS-2 yang sepadan, tanpa mengira bahasa atau kerumitan aksara.
Perwakilan Titik Kod UCS-2
Setiap titik kod UCS-2 disimpan dalam 1-4 bait, berdasarkan nilai titik kod:
Menentukan Kiraan Byte
untuk menentukan Kiraan Byte watak, periksa bait pertama:Contoh Kod C
Berikut ialah contoh kod C untuk menukar aksara UTF-8 kepada titik kod UCS-2:
<code class="c">wchar_t utf8_char_to_ucs2(const unsigned char *utf8) { if(!(utf8[0] & 0x80)) // 0xxxxxxx return (wchar_t)utf8[0]; else if((utf8[0] & 0xE0) == 0xC0) // 110xxxxx return (wchar_t)(((utf8[0] & 0x1F) << 6) | (utf8[1] & 0x3F)); else if((utf8[0] & 0xF0) == 0xE0) // 1110xxxx return (wchar_t)(((utf8[0] & 0x0F) << 12) | ((utf8[1] & 0x3F) << 6) | (utf8[2] & 0x3F)); else return ERROR; // uh-oh, UCS-2 can't handle code points this high }</code>
Penyelesaian Alternatif
Anda juga boleh menggunakan perpustakaan sedia ada seperti iconv atau perpustakaan khusus untuk bahasa pengaturcaraan anda.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar aksara dalam rentetan UTF-8 kepada titik kod UCS-2 yang sepadan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!