Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menentukan Dengan Tepat Panjang Rentetan Berkod UTF-8 dalam C?

Bagaimana untuk Menentukan Dengan Tepat Panjang Rentetan Berkod UTF-8 dalam C?

Barbara Streisand
Barbara Streisandasal
2024-10-26 05:58:02551semak imbas

How to Accurately Determine the Length of a UTF-8 Encoded String in C  ?

Menentukan Panjang Rentetan Dikodkan UTF-8

Dalam C , pengekodan std::string mungkin berbeza-beza dan menggunakan fungsi length() pada rentetan yang dikodkan UTF-8 boleh menghasilkan perwakilan yang tidak tepat bagi panjang sebenarnya. Untuk memastikan panjang yang betul, pertimbangkan corak jujukan bait berikut:

0x00000000 - 0x0000007F:
       0xxxxxxx

0x00000080 - 0x000007FF:
       110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF:
       1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF:
       11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Untuk mengira panjang sebenar rentetan yang dikodkan UTF-8:

  1. Mulakan len pembolehubah kepada 0 .
  2. Lelaran melalui aksara rentetan mengikut aksara.
  3. Untuk setiap aksara, semak sama ada ia mengikut corak jujukan bait untuk aksara bait tunggal (0xxxxxxx).
  4. Jika ia, menambah len sebanyak 1.
  5. Jika tidak, langkau bait semasa dan seterusnya.

Coretan kod berikut menggambarkan pelaksanaan:

<code class="cpp">int len = 0;
const char *s = str.c_str(); // convert to C-style string
while (*s) len += (*s++ & 0xc0) != 0x80;</code>

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Dengan Tepat Panjang Rentetan Berkod UTF-8 dalam C?. 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