KomputerPengaturcaraan

UTF-8 - pengekodan aksara

Unicode menyokong hampir semua set aksara yang sedia ada. Bentuk terbaik pengekodan set aksara Unicode adalah pengekodan UTF-8. Ia menyokong keserasian dengan ASCII, rintangan kepada penyelewengan data, kecekapan dan kemudahan pemprosesan. Tetapi perkara pertama yang pertama.

bentuk pengekodan

Komputer beroperasi bukan sahaja nombor objek abstrak matematik, serta gabungan unit penyimpanan dan pengendalian data bersaiz tetap - bait dan kata-kata 32-bit. Pengekodan standard mesti mengambil kira perkara ini apabila menentukan bagaimana untuk membentangkan bilangan aksara.

Dalam sistem komputer, integer yang disimpan di dalam sel-sel memori 8 bit (1 bait), 16 atau 32 bit. Setiap borang mentakrifkan pengekodan Unicode, yang urutan sel-sel memori adalah integer yang sepadan dengan simbol tertentu. Dalam standard terdapat tiga bentuk yang berbeza pengekodan aksara Unicode 8, 16 dan 32-bit blok. Oleh itu, mereka dikenali sebagai UTF-8, UTF-16 dan UTF-32. Nama UTF bermaksud Format Transformasi Unicode. Setiap satu daripada tiga bentuk pengekodan cara adalah sama perwakilan watak Unikod mempunyai kelebihan dalam pelbagai aplikasi.

penyulitan data boleh digunakan untuk mewakili semua watak-watak dalam standard Unicode. Oleh itu, mereka adalah serasi sepenuhnya untuk penyelesaian bagi pelbagai sebab, dengan menggunakan pelbagai bentuk pengkodan. Setiap pengekodan jelas boleh ditukarkan ke mana-mana daripada dua yang lain tanpa kehilangan data.

prinsip nenalozheniya

Setiap satu daripada pengekodan bentuk Unicode dibangunkan memandangkan pertindihan bukan sebahagian. Sebagai contoh, Windows-932 membentuk watak-watak daripada satu atau dua bait kod. Panjang urutan bergantung kepada bait yang pertama, jadi nilai bait utama dalam siri dua-bait dan tak berkait bait tunggal. Walau bagaimanapun, nilai satu bait tunggal dan ketinggalan urutan bait mungkin bertepatan. Ini bermakna sebagai contoh bahawa carian watak D (kod 44) boleh merasa tersilap memasukkan ke dalam bahagian kedua urutan dua bait watak "D" (kod 84 44). Untuk mengetahui urutan adalah betul, program ini perlu mengambil kira bait sebelumnya.

Keadaan ini adalah rumit, jika perlawanan bytes hadapan dan belakang. Ini bermakna bahawa dalam usaha untuk menghapuskan kekaburan akan menjadi reverse lookup sebelum sampai awal teks atau urutan kod yang unik. Ini bukan sahaja tidak cekap, tetapi tidak dilindungi daripada kesilapan yang mungkin, kerana hanya satu bait salah untuk teks penuh telah menjadi tidak boleh dibaca.

Penukaran format Unicode mengelakkan masalah ini kerana nilai yang terkemuka, trailing, dan satu unit tunggal penyimpanan tidak maklumat yang sama. Ini memastikan semua Unicode untuk mencari dan perbandingan, tidak pernah memberi keputusan yang salah kerana kebetulan bahagian yang berlainan kod watak. Hakikat bahawa bentuk-bentuk pengekodan memerhatikan nenalozheniya prinsip, membezakan mereka daripada pengekodan pelbagai bait Asia Timur.

Satu lagi aspek nonintersection pengekodan Unicode adalah bahawa setiap watak mempunyai sempadan yang jelas. Ini menghapuskan keperluan untuk mengimbas nombor yang tidak terbatas simbol sebelumnya. Ciri ini kadang-kadang dipanggil pengekodan sendiri catatan masa. Penyelewengan unit kod akan memperkenalkan penyelewengan hanya satu watak, dan watak-watak sekitar masih utuh. Dalam format penukaran 8-bit, jika titik penunjuk kepada bait, bermula dengan 10xxxxxx (kod binari) untuk mencari permulaan simbol diperlukan selama satu hingga tiga peralihan terbalik.

konsisten

Unicode Consortium menyokong sepenuhnya semua 3 bentuk pengekodan. Ia adalah penting untuk tidak menentang UTF-8 dan Unicode, kerana semua format penukaran - sama-sama bentuk sah penjelmaan Unicode watak-pengekodan standard.

Bait-orientation

Mewakili UTF-32 aksara akan memerlukan unit kod 32-bit, yang bertepatan dengan kod Unicode. UTF-16 - 01:59 unit 16-bit. A UTF-8 menggunakan sehingga 4 bait.

Pengekodan UTF-8 direka untuk menjadi serasi dengan sistem berasaskan ASCII bait berorientasikan. Kebanyakan perisian yang sedia ada dan amalan teknologi maklumat untuk jangka masa yang lama bergantung kepada perwakilan watak-watak dalam urutan bait. Pelbagai protokol bergantung kepada keteguhan pengekodan ASCII dan menggunakan sama ada mengelakkan watak-watak kawalan khas. Cara mudah untuk menyesuaikan diri dengan keadaan Unicode boleh, dengan menggunakan 8-bit pengekodan untuk mewakili aksara Unicode, mana-mana watak ASCII setara atau aksara kawalan. Untuk tujuan ini, dan ia adalah pengekodan UTF-8.

panjang boleh ubah

UTF-8 - pengekodan panjang boleh ubah, yang terdiri daripada unit simpanan 8-bit, bit atas yang menunjukkan kepada yang sebahagian daripada urutan setiap bait individu tergolong. Satu julat nilai yang diperuntukkan kepada elemen pertama urutan kod, yang lain - untuk seterusnya. Ini menyediakan pengekodan disjointness.

ASCII

Kod ASCII pengekodan UTF-8 disokong sepenuhnya (0x00-0x7F). Ini bermakna bahawa watak-watak Unikod U + 0000-U + 007F ditukar kepada bait tunggal 0x00-0x7F UTF-8 dan dengan itu menjadi tidak dapat dibezakan dari ASCII. Selain itu, untuk mengelakkan kekaburan, nilai 0x00-0x7F tidak digunakan lagi dalam perwakilan bait tunggal aksara Unicode. Untuk mengekod simbol neideograficheskih selain ASCII, menggunakan serangkaian dua bait. Simbol terdiri U + 0800-U + FFFF diwakili oleh tiga bait, dan kod tambahan dengan lebih daripada U + FFFF memerlukan empat bait.

bidang permohonan

Pengekodan UTF-8 biasanya diberi keutamaan dalam protokol HTML, dan sebagainya.

XML telah menjadi standard yang pertama dengan sokongan penuh untuk pengekodan UTF-8. organisasi piawaian juga mengesyorkan ia. masalah sokongan di alamat URL yang berbeza daripada yang ASCII-aksara, telah diselesaikan apabila W3C konsortium dan kumpulan kejuruteraan IETF pemimpin mencapai persetujuan mengenai pengekodan semua alamat URL semata-mata dalam UTF-8.

Keserasian dengan ASCII memudahkan peralihan kepada perisian baru. Dengan UTF-8 berfungsi paling editor teks, termasuk JEdit, Emacs, BBEdit, Eclipse, dan "Notepad" sistem operasi Windows. Tiada bentuk lain pengekodan Unicode tidak boleh berbangga dengan apa-apa sokongan alat.

pengekodan kelebihan ialah bahawa ia terdiri daripada jujukan bait. Dengan UTF-8 rentetan mudah untuk bekerja di C dan bahasa pengaturcaraan yang lain. Ini adalah satu-satunya bentuk pengekodan, perintah itu tidak memerlukan label bait BOM atau pengisytiharan pengekodan dalam XML.

penyegerakan diri

Dalam persekitaran yang menggunakan simbol 8-bit pemprosesan berbanding dengan set aksara multi-bait lain, UTF-8 mempunyai kelebihan berikut:

  • Pertama urutan kod bait mengandungi maklumat tentang panjangnya. Ini meningkatkan kecekapan carian langsung.
  • Dipermudahkan mencari tempat awal simbol sebagai bait permulaan adalah terhad kepada pelbagai tetap nilai.
  • Tiada nilai-nilai persimpangan bait.

Bandingkan faedah

Pengekodan UTF-8 adalah padat. Tetapi apabila digunakan untuk pengekodan aksara Asia Timur (China, Jepun, Korea, tulisan Cina menggunakan tanda-tanda) yang digunakan urutan 3 bait. Juga pengekodan UTF-8 adalah lebih rendah daripada lain-lain bentuk pengekodan kelajuan pemprosesan. A garisan menyusun binari menghasilkan keputusan yang sama seperti binari menyusun Unicode.

Skim pengekodan aksara

Skim pengekodan aksara terdiri daripada bentuk simbol pengekodan dan kaedah untuk bait tunggal unit kod lokasi. Untuk menentukan skim pengekodan Unicode standard menyediakan penggunaan tanda perintah bait awal (BOM, Byte tanda pesanan).

Apabila BOM dalam UTF-8 ciri tag adalah terhad hanya dengan merujuk kepada penggunaan bentuk pengkodan. Masalah dalam menentukan endian UTF-8 yang mempunyai, kerana saiz unit pengekodan adalah salah satu bait. Menggunakan BOM bagi cara pengekodan tidak diperlukan atau disyorkan. BOM mungkin berlaku dalam teks yang hendak ditukar dari codings lain menggunakan tanda perintah bait atau tandatangan untuk pengekodan UTF-8. Adalah satu urutan 3 bytes EF BB 16 16 BF 16.

Bagaimana untuk menetapkan pengekodan UTF-8

The HTML pengekodan UTF-8 dipasang dengan kod berikut:

kepala

Meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" ˃

Dalam PHP pengekodan UTF-8 ditetapkan menggunakan fungsi header () pada awal fail selepas menetapkan kesilapan output nilai tahap:

˂? Php

error_reporting (-1);

header ( "Content-Type: text / html; charset = utf-8 ');

Untuk menyambung kepada pangkalan data MySQL pengekodan UTF-8 ditetapkan:

˂? Php

mysql_set_charset ( 'UTF8');

Pengekodan CSS-fail adalah aksara UTF-8 yang dinyatakan seperti berikut:

@charset "utf-8";

Apabila anda menyimpan fail semua jenis pilih pengekodan UTF-8 tanpa BOM, jika tidak, laman web ini tidak akan berfungsi. Untuk melakukan ini dalam DreamWeave perlu untuk memilih item menu "Pengubahsuaian - Hartanah Page - Title / Encoding" untuk menukar pengekodan untuk UTF-8. Diikuti dengan memuatkan semula halaman, keluarkan tanda semak daripada "Connect Unicode tandatangan (BOM)» dan melaksanakan perubahan. Jika mana-mana teks pada halaman atau di dalam pangkalan data yang telah memperkenalkan satu lagi bentuk coding, ia adalah perlu untuk memasukkan semula atau semula mengekod. Apabila anda bekerja dengan ungkapan biasa, pastikan anda menggunakan pengubah suai u.

Anda juga boleh menyimpan fail dalam pengekodan UTF-8 dalam "Notepad" Windows. Selepas memilih item menu "File - Save As ..." untuk memasang borang yang diperlukan pengekodan dan menyimpan fail dalam UTF-8.

Dalam teks editor Notepad ++, jika diset selain daripada UTF-8, melalui item menu "Tukar kepada UTF-8 tanpa BOM» menukar watak dan simpan dalam UTF-8.

tidak ada alternatif

Dalam konteks globalisasi, di mana sempadan politik dan bahasa dipadamkan, set watak yang mempunyai ciri-ciri tempatan, adalah penggunaan sedikit. Unicode adalah satu set aksara yang menyokong semua lokalisasi. A UTF-8 - contoh pelaksanaan yang sepatutnya Unicode, iaitu:

  • Ia menyokong pelbagai peralatan, termasuk keserasian dengan pengekodan ASCII;
  • Ia adalah tahan kepada data penyelewengan;
  • mudah dan berkesan dalam rawatan;
  • adalah platform bebas.

Dengan adanya perbahasan UTF-8 tentang apa bentuk pengekodan atau watak set adalah lebih baik, ia menjadi tidak bermakna.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ms.birmiss.com. Theme powered by WordPress.