Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-10-26 05:58:02
asal
626 orang telah melayarinya

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
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan