Sekiranya anda pernah cuba menghantar mesej kosong di Telegram, kemungkinan besar anda mengetahui bahawa tanda ruang atau tanda baris baru (Alt + Enter) tidak dihantar - medan input hanya dibersihkan. Pada masa yang sama, anda dapat melihat bahawa orang lain secara harfiah menghantar anda ruang kosong, dan mereka berjaya. Di mana sihir di sini? Sekiranya anda mahukan jawapan pendek – mereka memasukkan watak "patah" u+3164. Anda boleh menyalinnya dari tanda kurung dan menggunakan: "tutorial". Sekiranya anda mahukan jawapan yang lebih terperinci, di bawah ini kami akan memberitahu anda dari mana teks yang tidak kelihatan berasal, bagaimana mendapatkan dan menggunakannya, mengapa anda tidak boleh menggunakannya dalam kod dan watak-watak lain yang ada.
Simbol tidak kelihatan-bagaimana ia berfungsi?
Mari mulakan penjelasan dengan jadual watak dan pengekodan. Mana-mana komputer di peringkat perkakasan memahami 2 aksara: 0 dan 1. Ini tidak mudah untuk orang, kerana kita masih lebih banyak digunakan untuk huruf yang dibentuk menjadi kata-kata, ayat, perenggan, dan sebagainya. Untuk bekerja dengan huruf – huruf ini tanpa sebarang masalah, kami telah menghasilkan skema yang sangat mudah-kami mengambil huruf-huruf dalam rangka dan memberi mereka nombor unik: a = 1, b = 2, C = 3 dan sebagainya. Kami juga memberikan nombor unik kepada huruf besar, tanda – tanda (dot, koma, tanda tanya dan sebagainya), ruang kosong dan nombor-senarai tenun pengecam unik yang diberikan kepada setiap watak mungkin. Senarai ini dipanggil jadual kod watak, dan jadual kod pertama diiktiraf adalah ASCII:
Bahagian kedua kosong. Ia bertujuan untuk watak serantau. Jadual itu sendiri seperti maklumat rujukan. Terdapat juga pengekodan-satu set arahan untuk mendekripsi jadual ini. Pengekodan muncul kerana piawaian serantau. Mereka diperlukan untuk membaca aksara "betul". Jika kita mengambil pengekodan yang biasa di CIS pada masa itu, maka akan ada arahan di dalamnya: "untuk mendapatkan huruf "tutorial" gunakan 8x3 dalam ASCII"; jika kita mengambil pengekodan yang digunakan di Jerman pada masa itu, maka ia akan ditulis: "untuk mendapatkan huruf "tutorial" gunakan 8x3".
Oleh kerana ia sangat menyusahkan kerana penyetempatan ke dalam beberapa bahasa, jadual watak baru, Unicode, dicipta dan diseragamkan. Unicode boleh mengandungi lebih daripada 1,000,000 aksara. Pada masa ini kira – kira 100,000 aksara telah ditambah ke Unicode-jadi, 90% lagi sel boleh didapati. Pengekodan UTF sejagat diciptakan untuk Unicode untuk memudahkan pereka melukis fon (ya, untuk setiap pengekodan yang berasingan, pereka perlu melukis fon yang terpisah).
Itulah latar belakang yang cukup – kini sudah tiba masanya untuk mengetahui di mana watak yang tidak kelihatan berasal. Ini semua mengenai pepijat Unicode: beberapa watak khas (Kawalan dan ruang kosong) tidak berkelakuan seperti yang diharapkan. Kumpulan bug yang paling menarik bagi kita adalah watak yang tidak kelihatan. Intinya adalah bahawa tanda itu harus istimewa dan harus ditampilkan sebagai ruang kosong yang sangat kecil, tetapi pengekodan menganggapnya sebagai watak penuh (seperti huruf atau angka) dan memaparkannya sebagai ruang yang besar. Anda mungkin telah menebak bagaimana kawasan yang tidak kelihatan sebagai tanda penuh dapat digunakan–untuk memasukkan ruang di mana ia tidak disediakan.
Teks tidak kelihatan – bagaimana untuk menyalin dan menampal?
Sebagai permulaan, kami akan memberitahu anda tentang berita sedih: walaupun bug pengekodan ini secara beransur-ansur diperbaiki. Sebelumnya (pada tahun 2012), trik popular di "Vkontakte" – adalah mungkin untuk memasukkan watak kawalan baris baru ke dalam status, dan statusnya dibahagikan kepada 2 baris. Sekarang anda tidak dapat melakukan ini – laman web memproses output data dengan betul, dan prasasti seperti itu tidak lagi memecahkan rentetan:
Sebagai tambahan kepada &nsbp, rangkaian sosial dan utusan telah memotong semua kawalan dan aksara khas – anda tidak boleh menghidupkan teks terbalik atau memaparkannya ke belakang jika ia tidak disediakan oleh bahasa pada mulanya. Terdapat perkhidmatan seperti https://textinvert.ru/, yang membolehkan anda menukar teks, tetapi mereka tidak membalikkannya, tetapi mengambil huruf serupa dalam bahasa lain. Ia memerlukan algoritma khas. Sangat sukar untuk membuat teks kosong yang besar sekarang (walaupun masih mungkin), tetapi emoji yang tidak kelihatan dan tanda set kosong yang memecahkan banyak fon juga diperbaiki sekarang. Yang tinggal hanyalah menghantar mesej kosong seperti ini:
Unicode U+3164 untuk memasukkan watak yang tidak kelihatan
Jadi, perkara yang paling berguna adalah ruang yang tidak kelihatan, alias "rentetan kosong". Malah, terdapat 3 watak-watak ini, di sini adalah kod mereka:
Kod watak |
Watak |
U+115F |
ᅟ |
U + 1160 |
ᅠ |
U + 3164 |
ㅤ |
Untuk melihat watak, klik dua kali di dalam jadual. "Word", dengan cara itu, sedikit menonjolkan simbol dalam kelabu.
Bagi watak-watak yang lain, masih ada watak ruang kosong dengan alamat di kawasan   –  , tetapi kami mengujinya dan mengetahui bahawa utusan menganggapnya sebagai ruang biasa – oleh itu, mereka tidak berminat. Sekiranya anda memerlukannya atau anda ingin mengujinya sendiri dalam perkhidmatan yang berbeza – berikut adalah beberapa ruang dan watak kawalan:
Kod watak |
Apa maksudnya? |
Watak |
U+00A0 |
Ruang tanpa jurang |
|
U + 2003 |
Em space |
|
U + 2007 |
Ruang kerinting (apa sahaja maksudnya) |
|
U+2008 |
Ruang tandabaca |
|
U + 2009 |
Ruang sempit |
|
U + 205F |
Ruang matematik purata |
|
U+3000 |
Ruang ideografik |
|
Bagi tiga watak di atas, pada mulanya mereka adalah tempat letak untuk watak Korea yang bertindih. Mereka dianggap sebagai watak penuh, walaupun mereka adalah pengisi. Mungkin tingkah laku ini disebabkan oleh fakta bahawa apabila pemegang tempat digunakan, hieroglif tidak boleh dipindahkan ke baris baru. Sekiranya watak itu dianggap sebagai ruang kosong, pemindahan mungkin berlaku (ia bergantung pada watak kawalan lain). Bagaimanapun, anda boleh menyalin watak kosong dari meja dan menampalnya di mana sahaja anda perlukan. Tetapi di mana ia boleh dimasukkan – mari lihat di bawah.
Teks yang tidak kelihatan di WhatsApp, VK, Instagram, Discord dan permainan
Seperti yang telah kami katakan, semua platform utama telah memastikan bahawa watak kawalan, khas dan lain-lain "tidak standard" dipotong semasa pemprosesan. Oleh itu, skop penggunaan simbol tersebut sangat terhad, walaupun di beberapa tempat mereka masih boleh digunakan.
Whatsapp, Viber, Telegram:
Sekiranya anda memasukkan ruang kosong biasa, maka WhatsApp, seperti utusan lain, tidak membenarkan anda menghantar mesej ini – butang "hantar" tidak muncul. U + 3164 boleh dihantar. Hasilnya adalah mesej kosong.
VK, Facebook Messenger:
Terdapat situasi yang sama dengan utusan – anda boleh menghantar mesej kosong ke mesej peribadi. Ngomong – ngomong, anda juga boleh meletakkan U+3164 dalam status VK-ia akan dipaparkan sebagai baris kosong. Jika anda meletakkan ruang biasa, status akan dipadamkan dan tulisan "Set status" akan kelihatan.
TikTok, Instagram: Tiada pilihan untuk menggunakan ruang tersembunyi. Kedua-dua platform menganggap watak ruang tersembunyi sebagai ruang biasa.
Discord:
Discord membolehkan anda menghantar mesej kosong. Pada masa yang sama, jika anda cuba membuat saluran dengan nama kosong, Discord tidak akan membenarkan anda melakukan ini:
Soalan Lazim
Sekiranya saya meletakkan watak yang tidak kelihatan di Skype, Adakah statusnya akan "luar talian"?
Tidak, anda boleh menulis teks apa pun di bar status akaun (termasuk ruang tersembunyi), status "dalam talian" atau "luar talian" tidak akan berubah.
Apakah masalah dengan watak null dalam pengaturcaraan?
Anda tidak boleh menggunakannya dalam kod anda jika anda tidak mahu merosakkannya. Jika anda perlu menggunakan aksara untuk penyimpanan atau output, tuliskannya kepada pembolehubah atau output dengan kod Unicode. Mengapa lebih baik tidak menggunakannya? Berikut adalah contoh untuk anda:
Seperti yang anda lihat, kami telah menyatakan pemboleh ubah yang mempunyai ruang dalam nama, yang dilarang oleh Python. Pada masa yang sama, PyCharm memberi amaran bahawa ada sesuatu yang salah dengan pemboleh ubah ini:
Anda bukan sahaja melanggar peraturan bahasa, anda juga meletakkan bicara di roda anda: untuk mengakses pemboleh ubah, anda perlu menyalin dan menampal namanya secara manual. Jika anda melakukan beberapa projek untuk diri sendiri dan ingin merumitkan hidup anda, anda boleh menggunakan ruang tersebut, tetapi jika anda sedang menjalankan beberapa projek yang serius, jangan cuba melakukan ini, jika tidak, anda akan menghadapi masalah.
Bolehkah watak khas memecahkan susun atur?
Secara teori, ini mungkin dilakukan dengan syarat susun atur dilakukan secara bengkok atau mewarisi corak buruk. Adalah lebih baik untuk tidak menggunakan aksara sedemikian dalam susun atur, jika anda tidak mahu jika anda tidak mahu segala-galanya rosak satu hari.
Adakah mungkin menggunakan simbol ini untuk penggodaman?
Secara teknikal, salah satu watak kawalan – '\0' – dapat digunakan untuk menggodam sistem melalui program yang ditulis dalam C. terminator nol menunjukkan kepada program bahawa garis telah berakhir, dan kod jahat dapat ditulis setelah terminator. Tetapi ini sangat sukar, kerana pertama, anda perlu mencari program yang salah memproses baris masuk, dan kemudian juga membolehkan anda menjalankan kod jahat dari ingatan orang lain. Kira-kira 15 tahun yang lalu ia adalah cara yang popular untuk menggodam, kini ia lebih seperti pameran muzium penggodaman.
Soalan Lazim
Sekiranya saya meletakkan watak yang tidak kelihatan di Skype, Adakah statusnya akan "luar talian"?
Tidak, anda boleh menulis teks apa pun di bar status akaun (termasuk ruang tersembunyi), status "dalam talian" atau "luar talian" tidak akan berubah.
Apakah masalah dengan watak null dalam pengaturcaraan?
Anda tidak boleh menggunakannya dalam kod anda jika anda tidak mahu merosakkannya. Jika anda perlu menggunakan aksara untuk penyimpanan atau output, tuliskannya kepada pembolehubah atau output dengan kod Unicode. Mengapa lebih baik tidak menggunakannya? Berikut adalah contoh untuk anda:
Seperti yang anda lihat, kami telah menyatakan pemboleh ubah yang mempunyai ruang dalam nama, yang dilarang oleh Python. Pada masa yang sama, PyCharm memberi amaran bahawa ada sesuatu yang salah dengan pemboleh ubah ini:
Anda bukan sahaja melanggar peraturan bahasa, anda juga meletakkan bicara di roda anda: untuk mengakses pemboleh ubah, anda perlu menyalin dan menampal namanya secara manual. Jika anda melakukan beberapa projek untuk diri sendiri dan ingin merumitkan hidup anda, anda boleh menggunakan ruang tersebut, tetapi jika anda sedang menjalankan beberapa projek yang serius, jangan cuba melakukan ini, jika tidak, anda akan menghadapi masalah.
Bolehkah watak khas memecahkan susun atur?
Secara teori, ini mungkin dilakukan dengan syarat susun atur dilakukan secara bengkok atau mewarisi corak buruk. Adalah lebih baik untuk tidak menggunakan aksara sedemikian dalam susun atur, jika anda tidak mahu jika anda tidak mahu segala-galanya rosak satu hari.
Adakah mungkin menggunakan simbol ini untuk penggodaman?
Secara teknikal, salah satu watak kawalan – '\0' – dapat digunakan untuk menggodam sistem melalui program yang ditulis dalam C. terminator nol menunjukkan kepada program bahawa garis telah berakhir, dan kod jahat dapat ditulis setelah terminator. Tetapi ini sangat sukar, kerana pertama, anda perlu mencari program yang salah memproses baris masuk, dan kemudian juga membolehkan anda menjalankan kod jahat dari ingatan orang lain. Kira-kira 15 tahun yang lalu ia adalah cara yang popular untuk menggodam, kini ia lebih seperti pameran muzium penggodaman.