Alat pengembang · Perbandingan teks
Perbedaan Tak Terlihat: Ruang Tanpa Batas, Kutipan Cerdas, dan Bentuk Unicode
· Cara kerjanya
perbedaan teks unicode melakukan debug
Menjelaskan mengapa garis yang terlihat sama di layar dapat berbeda byte demi byte, dari spasi tidak putus dan tanda kutip keriting hingga karakter dengan lebar nol dan aksen terurai, serta cara menemukannya.
Dua baris yang tampak identik tetapi ditandai sebagai diubah — dibuka dengan file terjemahan yang gagal ditinjau tanpa alasan yang jelas
Baris terjemahan dapat ditampilkan persis seperti tetangganya dan masih gagal dibandingkan. Font browser menyembunyikan batas titik kode, menggabungkan aksen, dan menetapkan bentuk serupa ke tanda baca berbeda. ToolAcre membandingkan string JavaScript hanya setelah transformasi huruf besar atau spasi yang dipilih, sehingga baris yang ditandai dapat memperlihatkan perbedaan tekstual yang sebenarnya.
Percayai lokasinya, bukan asumsi tentang karakternya. Salin baris yang dicurigai ke editor yang menampilkan titik kode atau inspektur heksadesimal. Perbedaannya memberi tahu Anda baris mana yang berbeda; itu tidak membubuhi keterangan posisi internal atau menyebutkan nilai Unicode yang bertanggung jawab.
Spasi tak putus-putus dan kerabatnya — menjelaskan U+00A0 dan karakter spasi lain yang disisipkan pengolah kata dan mengapa spasi biasa tidak cocok dengan karakter tersebut
U+00A0 spasi non-breaking tidak memiliki karakter yang sama dengan spasi biasa U+0020. Dalam mode biasa, tombol garisnya tetap berbeda. Di bawah Abaikan spasi putih, penggantian yang dijalankan dengan spasi putih dapat mengurangi proses tersebut menjadi ruang biasa setelah pemangkasan, sehingga beberapa perbedaan tersebut hilang.
Opsi tersebut adalah transformasi yang cocok, bukan perintah pembersihan Unicode. Baris sama yang ditampilkan mempertahankan teks kiri asli, dan tidak ada dokumen yang dikoreksi yang dihasilkan. Jika sistem penerbitan memerlukan spasi yang tidak dapat terputus, kecocokan yang dinormalisasi dapat menyembunyikan instruksi tata letak yang disengaja daripada memperbaikinya.
Mode spasi putih dapat menutup spasi Unicode; perbandingan biasa mempertahankan karakter yang berbeda
Apostrof lurus dan tanda petik berbeda dengan bentuk pembuka dan penutup tipografi. Abaikan huruf besar/kecil tidak mengubah tanda baca, dan penanganan spasi putih tidak menulis ulang tanda kutip. Oleh karena itu, koreksi otomatis pengolah kata dapat menghasilkan penggantian baris penuh meskipun sekilas kalimatnya terbaca sama.
Pilih tanda baca yang diinginkan berdasarkan tujuan. Kode sumber, kunci pencarian, dan format data mungkin memerlukan ASCII karakter yang tepat, sedangkan salinan editorial mungkin lebih menyukai bentuk tipografi. Perbandingan tersebut membuktikan perbedaan, namun tidak ada kebijakan untuk memutuskan pihak mana yang benar.
Karakter dengan lebar nol dan arah — mencakup spasi dengan lebar nol, penghubung, dan tanda dua arah yang ditampilkan sebagai tidak ada yang mengubah garis
Spasi lebar nol, penghubung, dan tanda arah dapat menempati posisi string tanpa menggambar mesin terbang yang terlihat. ToolAcre merender masukan menggunakan konten teks, menghindari interpretasi HTML, namun rendering yang aman tidak membuat titik kode tersembunyi terlihat. Mereka tetap mengikuti persamaan garis biasa.
Perilaku terarah juga dapat menjadikan tatanan visual sebagai panduan yang tidak dapat diandalkan untuk tatanan penyimpanan. Jangan menyalin fragmen arah campuran yang mencurigakan ke dalam perintah atau pengidentifikasi shell hanya karena terlihat familier. Periksa titik kode dan konteks sekitarnya dalam alat yang dibuat khusus sebelum mengganti apa pun.
Aksen tersusun dan terurai — menjelaskan normalisasi NFC versus NFD dengan huruf beraksen sebagai satu titik kode versus huruf dasar ditambah tanda gabungan
Karakter beraksen dapat direpresentasikan sebagai satu titik kode yang telah disusun sebelumnya atau sebagai huruf dasar yang diikuti dengan tanda gabungan. Repositori tidak berisi panggilan ke `normalize`, jadi formulir yang tampak setara secara kanonik tetap memiliki string JavaScript yang berbeda dan dapat menghasilkan baris hapus-tambah-tambah.
Jaringan pengujian membuktikan kecocokan string Unicode yang identik dan `café` berbeda dari `cafe`; itu tidak menjanjikan perbandingan yang sadar grafem. Oleh karena itu artikel ini menghindari klaim tentang perbandingan byte atau kesetaraan Unicode penuh. Algoritme garis menerima string dan membandingkan kunci yang diubah dengan kesetaraan yang ketat.
Aksen yang dikomposisi dan didekomposisi tetap berbeda karena alat tersebut tidak melakukan normalisasi Unicode
Misalkan baris sumber daya tampak tidak berubah namun ditandai. Pertama bandingkan dengan semua opsi dinonaktifkan, lalu alihkan spasi saja. Jika baris menjadi sama, periksa spasi dan spasi tersembunyi. Jika tetap berubah, periksa tanda kutip, gabungkan tanda dan titik kode lainnya daripada mengetik ulang baris tersebut berulang kali.
Seorang pemeriksa karakter dapat mengungkapkan U+00A0 di mana ruang biasa diharapkan. Gantilah hanya setelah mengonfirmasi persyaratan format. Dalam konten yang diterjemahkan, spasi yang tidak terputus mungkin merupakan konvensi tanda baca yang disengaja, dan pencarian dan penggantian yang luas dapat merusak tipografi yang benar di tempat lain.
Apa yang tidak tercakup dalam hal ini — perbandingan melaporkan bahwa garis-garisnya berbeda; itu tidak melakukan normalisasi Unicode untuk Anda atau mengganti karakter
Perbedaan teks tidak menormalkan NFC atau NFD, mengidentifikasi hal-hal yang membingungkan, menghapus tanda lebar nol, atau menghasilkan keluaran yang diperbaiki. Itu juga tidak membandingkan byte yang disandikan. Itu adalah operasi terpisah dengan konsekuensi yang tidak boleh dipilih secara diam-diam oleh pembanding jalur generik.
Abaikan penggunaan huruf besar-kecil JavaScript `toLowerCase`, sedangkan Abaikan spasi putih memangkas dan memadatkan kunci yang cocok. Tidak ada operasi yang menyediakan pemeriksaan lokal atau tinjauan keamanan Unicode. Gunakan keluaran untuk mempersempit penyelidikan, bukan untuk menyatakan pengenal aman atau setara secara bahasa.
Kesimpulan: percayai perbedaannya - simpulkan bahwa garis yang ditandai adalah perbedaan yang nyata dan menunjukkan bagaimana perbandingan Teks ToolAcre menunjukkan dengan tepat garis mana yang harus diperiksa
Ketika sight dan diff tidak sesuai, asumsikan string tersebut layak untuk diperiksa. Algoritme tidak memiliki model visual yang bisa ditipu dengan pembentukan font; ia melihat tombol garis. Batasan tersebut berguna karena menjaga perbedaan tersembunyi agar tidak diteruskan hanya karena browser menyamakannya.
Jalankan perbandingan biasa terlebih dahulu, catat opsi mana yang mengubah hasilnya, dan periksa poin kode sebelum mengedit. Jejak bukti ini memisahkan normalisasi spasi dari tanda baca atau komposisi dan menghindari kebiasaan merusak dengan mengganti setiap karakter yang tidak biasa dengan perkiraan ASCII.