თუ თქვენ ოდესმე სცადეთ ცარიელი შეტყობინების გაგზავნა Telegram - ში, მაშინ, სავარაუდოდ, გაარკვიეთ, რომ არც კოსმოსური ნიშანი და არც newline ნიშანი (Alt + Enter) არ იგზავნება-შეყვანის ველი უბრალოდ გაწმენდილია. ამავე დროს, თქვენ ხედავთ, რომ სხვა ადამიანები სიტყვასიტყვით გამოგიგზავნით ცარიელ ადგილს და ისინი წარმატებას მიაღწევენ. სად არის აქ მაგია? თუ გსურთ მოკლე პასუხი-ისინი ჩადეთ" გატეხილი " ხასიათი u+3164. შეგიძლიათ დააკოპიროთ იგი ფრჩხილებიდან და გამოიყენოთ: "ㅤㅤㅤ". თუ გსურთ უფრო დეტალური პასუხი, ქვემოთ ჩვენ გეტყვით საიდან მოდის უხილავი ტექსტი, როგორ უნდა მიიღოთ და გამოიყენოთ იგი, რატომ არ უნდა გამოიყენოთ იგი კოდში და რა სხვა სიმბოლოები არსებობს.
უხილავი სიმბოლო - როგორ მუშაობს იგი?
დავიწყოთ ახსნა სიმბოლოებისა და კოდირების ცხრილებით. ტექნიკის დონეზე ნებისმიერ კომპიუტერს ესმის 2 სიმბოლო: 0 და 1. ეს არ არის მოსახერხებელი ადამიანი, იმიტომ, რომ ჩვენ ჯერ კიდევ უფრო გამოიყენება წერილები, რომლებიც ჩამოყალიბდა სიტყვა, სასჯელს, პუნქტები, და ასე შემდეგ. ამ ასოებთან უპრობლემოდ მუშაობისთვის, ჩვენ გამოვიმუშავეთ ძალიან მარტივი სქემა-ჩვენ ვიღებთ ასოებს წესრიგში და ვაძლევთ მათ უნიკალურ ციფრებს: a = 1, b = 2, c = 3 და ასე შემდეგ. ჩვენ ასევე მისცეს უნიკალური ნომრები ასოებით, ნიშნები (dot, მძიმით, კითხვის ნიშნის და ასე შემდეგ), whitespace და ნომრები – სია ნამდვილად მოგველის უნიკალური იდენტიფიკატორი, რომელიც ენიჭება თითოეული შესაძლო ხასიათი. ეს სია ეწოდება ხასიათი კოდი მაგიდა, და პირველი კოდი მაგიდა აღიარებულია იყო ASCII:
მეორე ტაიმი ცარიელია. იგი განკუთვნილია რეგიონალური სიმბოლოებისთვის. მაგიდა თავად არის, როგორც მინიშნება ინფორმაცია. ასევე არსებობს კოდირება-ამ ცხრილის გაშიფვრის ინსტრუქციების ნაკრები. კოდირება გამოჩნდა რეგიონალური სტანდარტების გამო. ისინი საჭიროა იმისათვის, რომ პერსონაჟები "სწორად"წაიკითხონ. თუ ავიღებთ კოდირებას, რომელიც იმ დროს დსთ-ში იყო გავრცელებული, მაშინ მასში იქნება ინსტრუქცია: "ასო "г" - ს მისაღებად გამოიყენეთ 8X3 ASCII-ში"; თუ ავიღებთ კოდირებას, რომელიც იმ დროს გერმანიაში იყო გამოყენებული, მაშინ დაიწერება: "ასო "β" - ს მისაღებად გამოიყენეთ 8x3".
მას შემდეგ, რაც საშინლად მოუხერხებელი იყო რამდენიმე ენაზე ლოკალიზაციის გამო, გამოიგონეს და სტანდარტიზებული იქნა პერსონაჟების ახალი ცხრილი, უნიკოდი. Unicode შეიძლება შეიცავდეს 1,000,000-ზე მეტ სიმბოლოს. ამ დროისთვის უნიკოდს დაემატა დაახლოებით 100,000 სიმბოლო-ასე რომ, უჯრედების კიდევ 90% არის შესაძლებელი. უნივერსალური UTF კოდირება გამოიგონეს Unicode-სთვის, რათა დიზაინერებს გაუადვილონ შრიფტების დახატვა (დიახ, თითოეული ცალკეული კოდირებისთვის დიზაინერებმა უნდა დახატონ ცალკე შრიფტი).
ეს არის საკმარისი ფონზე - ახლა დროა გაირკვეს, სადაც უხილავი ხასიათი მოდის. ეს ყველაფერი Unicode-ის შეცდომებს ეხება: ზოგიერთი სპეციალური (საკონტროლო და whitespace) სიმბოლო არ იქცევა ისე, როგორც დანიშნულია. ჩვენთვის შეცდომების ყველაზე საინტერესო ჯგუფი უხილავი პერსონაჟია. საქმე იმაშია, რომ ნიშანი უნდა იყოს განსაკუთრებული და უნდა იყოს ნაჩვენები, როგორც ძალიან მცირე თეთრი სივრცე, მაგრამ კოდირება აღიქვამს მას, როგორც სრულფასოვან პერსონაჟს (ასოს ან რიცხვის მსგავსად) და აჩვენებს მას, როგორც დიდ ადგილს. თქვენ შეიძლება უკვე მიხვდით, თუ როგორ შეიძლება გამოყენებულ იქნას უხილავი ადგილი, როგორც სრულფასოვანი ნიშანი-ჩასვათ სივრცე, სადაც ის არ არის გათვალისწინებული.
უხილავი ტექსტი - როგორ დააკოპირეთ და ჩასვით?
დასაწყისისთვის, ჩვენ გაგაცნობთ სამწუხარო ამბებს: კოდირების ეს შეცდომებიც კი თანდათან ფიქსირდება. ადრე (2012 წელს), ხრიკი პოპულარული იყო "Vkontakte" – ში-შესაძლებელი იყო newline კონტროლის პერსონაჟის ჩასმა სტატუსში და სტატუსი დაიყო 2 ხაზად. ახლა ამის გაკეთება არ შეგიძლიათ-საიტი სწორად ამუშავებს მონაცემთა გამომუშავებას და ასეთი წარწერა აღარ არღვევს სტრიქონს:
&Nsbp-ის გარდა, სოციალურმა ქსელებმა და მესინჯერებმა შეამცირეს ყველა კონტროლი და სპეციალური სიმბოლოები – თქვენ არ შეგიძლიათ ტექსტის თავდაყირა გადაქცევა ან უკან დაბრუნება, თუ ის თავდაპირველად არ არის გათვალისწინებული ენით. არსებობს მომსახურება, როგორიცაა https://textinvert.ru/, რაც საშუალებას გაძლევთ შეცვალოთ ტექსტი, მაგრამ ისინი მას თავდაყირა არ აქცევენ, მაგრამ სხვა ენებზე აიღებენ მსგავს ასოებს. ეს მოითხოვს სპეციალურ ალგორითმს. ახლა ძალიან რთულია დიდი ცარიელი ტექსტის შექმნა (თუმცა ეს ჯერ კიდევ შესაძლებელია), მაგრამ უხილავი emoji და ცარიელი ნაკრების ნიშანი, რომელმაც ბევრი შრიფტი გატეხა, ახლაც ფიქსირდება. რჩება მხოლოდ მსგავსი ცარიელი შეტყობინებების გაგზავნა:
Unicode U+3164 უხილავი პერსონაჟის ჩასასმელად
ასე რომ, ყველაზე სასარგებლო რამ არის უხილავი სივრცე, ანუ "ცარიელი სტრიქონი". სინამდვილეში, ამ სიმბოლოებიდან 3 არსებობს, აქ არის მათი კოდები:
პერსონაჟის კოდი |
ხასიათი |
U+115ფ |
ᅟ |
უ+1160 |
ᅠ |
უ+3164 |
ㅤ |
იმისათვის, რომ ნახოთ ხასიათი, ორჯერ დააწკაპუნეთ მასზე მაგიდასთან. "სიტყვა", სხვათა შორის, ოდნავ ხაზს უსვამს სიმბოლოს ნაცრისფერში.
რაც შეეხება დანარჩენ სიმბოლოებს, ჯერ კიდევ არსებობს whitespace გმირები მისამართები ფართობი   –  , მაგრამ ჩვენ ტესტირება მათ და აღმოჩნდა, რომ მესენჯერები აღიქვამენ მათ, როგორც ჩვეულებრივი ფართები-აქედან გამომდინარე, ისინი არ არიან ინტერესი. თუ ისინი მაინც გჭირდებათ ან გსურთ თავად შეამოწმოთ ისინი სხვადასხვა სერვისებში - აქ არის კიდევ რამდენიმე სივრცე და კონტროლის სიმბოლო:
პერსონაჟის კოდი |
რას ნიშნავს ეს? |
ხასიათი |
U+00A0 |
სივრცე ხარვეზის გარეშე |
|
უ+2003 |
Em ფართი |
|
უ+2007 |
Curly სივრცეში (რასაც ნიშნავს) |
|
უ+2008 |
პუნქტუაციის სივრცე |
|
უ+2009 |
ვიწრო სივრცე |
|
U+205ფ |
საშუალო მათემატიკის სივრცე |
|
უ+3000 |
იდეოგრაფიული სივრცე |
|
რაც შეეხება სამი ზემოთ სიმბოლოები, თავდაპირველად ისინი placeholders გადახურვის კორეის სიმბოლო. ისინი განიხილება, როგორც სრულფასოვანი პერსონაჟები, თუმცა ისინი შემავსებლები არიან. ალბათ, ეს ქცევა განპირობებულია იმით, რომ როდესაც ადგილი გამოიყენება, იეროგლიფი არ უნდა გადავიდეს ახალ ხაზზე. თუ პერსონაჟი თეთრ სივრცედ ითვლება, შეიძლება მოხდეს გადაცემა (ეს დამოკიდებულია სხვა საკონტროლო სიმბოლოებზე). ყოველ შემთხვევაში, თქვენ შეგიძლიათ დააკოპიროთ ცარიელი პერსონაჟი ცხრილიდან და ჩასვათ იქ, სადაც გჭირდებათ. მაგრამ სად შეიძლება მისი ჩასმა-ვნახოთ ქვემოთ.
უხილავი ტექსტი WhatsApp, VK, Instagram, Discord და თამაშებში
როგორც უკვე ვთქვით, ყველა ძირითადი პლატფორმა დარწმუნდა, რომ დამუშავების დროს ამოჭრილია საკონტროლო, სპეციალური და სხვა "არასტანდარტული" სიმბოლოები. ამიტომ, ასეთი სიმბოლოების გამოყენების სფერო უკიდურესად შეზღუდულია, თუმცა ზოგან მათი გამოყენება მაინც შეიძლება.
WhatsApp, Viber, ტელეგრამა:
თუ რეგულარულ თეთრ სივრცეს ჩასვამთ, მაშინ WhatsApp, ისევე როგორც სხვა მესინჯერები, არ გაძლევთ ამ შეტყობინების გაგზავნის საშუალებას – ღილაკი "გაგზავნა" არ ჩანს. U + 3164 შეიძლება გაიგზავნოს. შედეგი არის ცარიელი შეტყობინება.
VK, Facebook მესენჯერი:
იგივე სიტუაციაა, რაც მესინჯერებთან-შეგიძლიათ ცარიელი შეტყობინებები გაუგზავნოთ პირად შეტყობინებებს. სხვათა შორის, თქვენ ასევე შეგიძლიათ განათავსოთ U+3164 VK სტატუსში – ის გამოჩნდება როგორც ცარიელი ხაზი. თუ რეგულარულ ადგილს დააყენებთ, სტატუსი წაიშლება და გამოჩნდება წარწერა "Set status".
TikTok, Instagram: ფარული სივრცის გამოყენების ვარიანტი არ არსებობს. ორივე პლატფორმა ფარული სივრცის ხასიათს ჩვეულებრივ სივრცედ მიიჩნევს.
უთანხმოება:
Discord საშუალებას გაძლევთ გაგზავნოთ ცარიელი შეტყობინებები. ამავე დროს, თუ თქვენ ცდილობთ შექმნათ არხი ცარიელი სახელით, Discord არ მოგცემთ ამის საშუალებას:
კითხვა-პასუხი
თუ სკაიპში უხილავ პერსონაჟს დავდებ, სტატუსი იქნება "ხაზგარეშე"?
არა, შეგიძლიათ დაწეროთ ნებისმიერი ტექსტი ანგარიშის სტატუსის ზოლში (ფარული სივრცის ჩათვლით), სტატუსი "ონლაინ" ან "ხაზგარეშე" არ შეიცვლება.
რა პრობლემები აქვს null პერსონაჟს პროგრამირებაში?
თქვენ არ უნდა გამოიყენოთ ისინი თქვენს კოდში, თუ არ გსურთ მისი გაფუჭება. თუ თქვენ უნდა გამოვიყენოთ ხასიათი შენახვის ან გამომავალი, წერენ, რომ ეს ცვლადი ან გამომავალი ერთად Unicode კოდი. რატომ არის უკეთესი, რომ არ გამოიყენოთ იგი? აქ არის მაგალითი თქვენთვის:
როგორც ხედავთ, ჩვენ გამოვაცხადეთ ცვლადი, რომელსაც სახელში აქვს სივრცეები, რასაც პითონი კრძალავს. ამავე დროს, PyCharm აფრთხილებს, რომ ამ ცვლადში რაღაც არასწორია:
არა მხოლოდ თქვენ არღვევთ ენის წესებს, თქვენ ასევე აყენებთ ლაპარაკს თქვენს ბორბლებში: ცვლადზე შესასვლელად, თქვენ უნდა ხელით დააკოპიროთ და ჩასვათ მისი სახელი. თუ თქვენ თვითონ აკეთებთ გარკვეულ პროექტს და გსურთ გაართულოთ თქვენი ცხოვრება, შეგიძლიათ გამოიყენოთ ასეთი სივრცეები, მაგრამ თუ რაიმე სერიოზულ პროექტზე მუშაობთ, არც კი სცადოთ ამის გაკეთება, წინააღმდეგ შემთხვევაში პრობლემები შეგექმნებათ.
შეიძლება სპეციალური ხასიათი დაარღვიოს განლაგება?
თეორიულად, ეს შესაძლებელია იმ პირობით, რომ განლაგება კეთდება crookedly ან მემკვიდრეობით ცუდი ნიმუშები. უმჯობესია არ გამოიყენოთ ასეთი სიმბოლოები განლაგებაში, თუ არ გინდა, თუ არ გინდა, რომ ყველაფერი ერთ დღეს დაარღვიოს.
შესაძლებელია თუ არა, რომ გამოიყენოთ ეს სიმბოლოები გარჩევაში?
ტექნიკურად, კონტროლის ერთ – ერთი სიმბოლო – '\0' - შეიძლება გამოყენებულ იქნას სისტემის გატეხვისთვის c. a null terminator-ში დაწერილი პროგრამის საშუალებით, მიუთითებს პროგრამაზე, რომ ხაზი დასრულდა და მავნე კოდი შეიძლება დაიწეროს ტერმინატორის შემდეგ. მაგრამ ეს ძალიან რთულია, რადგან პირველ რიგში, თქვენ უნდა იპოვოთ პროგრამა, რომელიც არასწორად ამუშავებს შემომავალ ხაზებს, შემდეგ კი საშუალებას გაძლევთ აწარმოოთ მავნე კოდი სხვისი მეხსიერებიდან. დაახლოებით 15 წლის წინ ეს იყო პოპულარული გზა გარჩევაში, ახლა ეს უფრო ჰგავს მუზეუმის გამოფენა გარჩევაში.
კითხვა-პასუხი
თუ სკაიპში უხილავ პერსონაჟს დავდებ, სტატუსი იქნება "ხაზგარეშე"?
არა, შეგიძლიათ დაწეროთ ნებისმიერი ტექსტი ანგარიშის სტატუსის ზოლში (ფარული სივრცის ჩათვლით), სტატუსი "ონლაინ" ან "ხაზგარეშე" არ შეიცვლება.
რა პრობლემები აქვს null პერსონაჟს პროგრამირებაში?
თქვენ არ უნდა გამოიყენოთ ისინი თქვენს კოდში, თუ არ გსურთ მისი გაფუჭება. თუ თქვენ უნდა გამოვიყენოთ ხასიათი შენახვის ან გამომავალი, წერენ, რომ ეს ცვლადი ან გამომავალი ერთად Unicode კოდი. რატომ არის უკეთესი, რომ არ გამოიყენოთ იგი? აქ არის მაგალითი თქვენთვის:
როგორც ხედავთ, ჩვენ გამოვაცხადეთ ცვლადი, რომელსაც სახელში აქვს სივრცეები, რასაც პითონი კრძალავს. ამავე დროს, PyCharm აფრთხილებს, რომ ამ ცვლადში რაღაც არასწორია:
არა მხოლოდ თქვენ არღვევთ ენის წესებს, თქვენ ასევე აყენებთ ლაპარაკს თქვენს ბორბლებში: ცვლადზე შესასვლელად, თქვენ უნდა ხელით დააკოპიროთ და ჩასვათ მისი სახელი. თუ თქვენ თვითონ აკეთებთ გარკვეულ პროექტს და გსურთ გაართულოთ თქვენი ცხოვრება, შეგიძლიათ გამოიყენოთ ასეთი სივრცეები, მაგრამ თუ რაიმე სერიოზულ პროექტზე მუშაობთ, არც კი სცადოთ ამის გაკეთება, წინააღმდეგ შემთხვევაში პრობლემები შეგექმნებათ.
შეიძლება სპეციალური ხასიათი დაარღვიოს განლაგება?
თეორიულად, ეს შესაძლებელია იმ პირობით, რომ განლაგება კეთდება crookedly ან მემკვიდრეობით ცუდი ნიმუშები. უმჯობესია არ გამოიყენოთ ასეთი სიმბოლოები განლაგებაში, თუ არ გინდა, თუ არ გინდა, რომ ყველაფერი ერთ დღეს დაარღვიოს.
შესაძლებელია თუ არა, რომ გამოიყენოთ ეს სიმბოლოები გარჩევაში?
ტექნიკურად, კონტროლის ერთ – ერთი სიმბოლო – '\0' - შეიძლება გამოყენებულ იქნას სისტემის გატეხვისთვის c. a null terminator-ში დაწერილი პროგრამის საშუალებით, მიუთითებს პროგრამაზე, რომ ხაზი დასრულდა და მავნე კოდი შეიძლება დაიწეროს ტერმინატორის შემდეგ. მაგრამ ეს ძალიან რთულია, რადგან პირველ რიგში, თქვენ უნდა იპოვოთ პროგრამა, რომელიც არასწორად ამუშავებს შემომავალ ხაზებს, შემდეგ კი საშუალებას გაძლევთ აწარმოოთ მავნე კოდი სხვისი მეხსიერებიდან. დაახლოებით 15 წლის წინ ეს იყო პოპულარული გზა გარჩევაში, ახლა ეს უფრო ჰგავს მუზეუმის გამოფენა გარჩევაში.