Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menukar Aksara UTF-8 kepada Titik Kod UCS-2 dalam PHP?

Bagaimana untuk Menukar Aksara UTF-8 kepada Titik Kod UCS-2 dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 02:09:29483semak imbas

How to Convert UTF-8 Characters to UCS-2 Code Points in PHP?

Menukar Aksara UTF-8 kepada Mata Kod UCS-2

Dalam artikel ini, kami meneroka cara mengekstrak mata kod UCS-2 daripada aksara dalam rentetan UTF-8. Kami akan memberikan penjelasan terperinci tentang proses dan pelaksanaan dalam PHP versi 4 atau 5.

Memahami UTF-8

UTF-8 ialah standard pengekodan aksara yang mewakili aksara Unicode menggunakan satu hingga empat bait. Untuk menentukan bilangan bait bagi aksara tertentu, periksa bait utama:

  • 0xxxxxxx: aksara 1-bait
  • 110xxxxx: aksara 2-bait
  • 1110xxxx : aksara 3-bait
  • 11110xxx: aksara 4-bait

Menukar kepada UCS-2

UCS-2, juga dikenali sebagai UTF-16, ialah format pengekodan aksara yang boleh mewakili kebanyakan aksara Unicode. Penukaran daripada UTF-8 kepada UCS-2 mengambil kira bilangan bait setiap aksara seperti berikut:

  • Aksara 1-bait: Titik kod adalah terus UTF-8 bait nilai.
  • Aksara 2-bait: Alihkan bait pertama yang ditinggalkan sebanyak 6 bit dan bitwise ATAU dengan bait kedua.
  • Aksara 3-bait: Alihkan bait pertama ditinggalkan sebanyak 12 bit, bait kedua ditinggalkan sebanyak 6 bit dan bitwise ATAU bait tersebut dengan bait ketiga.

Pelaksanaan dalam PHP 4/5

Untuk PHP versi 4 atau 5, anda boleh melaksanakan fungsi untuk melaksanakan penukaran ini:

<code class="php">function utf8_char_to_ucs2($utf8) {
    if (!(ord($utf8[0]) & 0x80)) {
        return ord($utf8[0]);
    } elseif ((ord($utf8[0]) & 0xE0) == 0xC0) {
        return ((ord($utf8[0]) & 0x1F) << 6) | (ord($utf8[1]) & 0x3F);
    } elseif ((ord($utf8[0]) & 0xF0) == 0xE0) {
        return ((ord($utf8[0]) & 0x0F) << 12) | ((ord($utf8[1]) & 0x3F) << 6) | (ord($utf8[2]) & 0x3F);
    } else {
        return null; // Handle invalid characters or characters beyond UCS-2 range
    }
}</code>

Contoh Penggunaan

<code class="php">$utf8 = "hello";
for ($i = 0; $i < strlen($utf8); $i++) {
    $ucs2_codepoint = utf8_char_to_ucs2($utf8[$i]);
    printf("Code point for '%s': %d\n", $utf8[$i], $ucs2_codepoint);
}</code>

Ini akan mengeluarkan:

Code point for 'h': 104
Code point for 'e': 101
Code point for 'l': 108
Code point for 'l': 108
Code point for 'o': 111

Atas ialah kandungan terperinci Bagaimana untuk Menukar Aksara UTF-8 kepada Titik Kod UCS-2 dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn