ตัวอักษรล่องหน คัดลอกช่องว่างล่องหนได้เลย พร้อมวิธีใช้และวิธีเช็กตัวอักษรซ่อน




ตัวอักษรล่องหนคืออักขระพิเศษของ Unicode ที่แสดงบนหน้าจอเป็นที่ว่าง มองไม่เห็นตัวหนังสือ แต่แอปนับเป็นตัวอักษรจริงหนึ่งตัว จึงใช้ทำชื่อว่าง ข้อความว่าง หรือเว้นช่องในจุดที่ช่องว่างธรรมดาถูกตัดทิ้งได้ ตัวที่ถูกใช้บ่อยคือ Hangul Filler (U+3164) กับ Braille Pattern Blank (U+2800) ตารางด้านล่างมีช่องให้คัดลอกครบทุกตัว ส่วนสัญลักษณ์ทั่วไปอย่างหัวใจ ดาว ลูกศร ไปที่คลังสัญลักษณ์พิเศษคลิกคัดลอกได้เลย

บทความนี้อธิบายว่าอักขระแต่ละตัวต่างกันยังไง ทำไมช่องว่างธรรมดาถึงใช้แทนไม่ได้ วิธีคัดลอกไปใช้ และที่คนมักไม่รู้คือ ตัวอักษรล่องหนอาจติดมากับข้อความที่คัดลอกมาโดยไม่รู้ตัว ทำให้ค้นหาไม่เจอหรือลิงก์เพี้ยน พร้อมวิธีเช็กว่าข้อความของคุณมีตัวซ่อนอยู่หรือไม่

ตัวอักษรล่องหนที่ใช้บ่อย 5 ตัว พร้อมช่องคัดลอก

ช่องในคอลัมน์ "ช่องคัดลอก" มีอักขระนั้นอยู่ตัวเดียว ถ้าใช้คอมพิวเตอร์ให้คลิกสามครั้งที่ช่องเพื่อเลือก ถ้าใช้มือถือให้แตะค้างที่ช่องแล้วเลือกคัดลอก ส่วนข้อมูลหมวดและคุณสมบัติในตารางนำมาจากฐานข้อมูลอักขระของ Unicode (UnicodeData, PropList และ DerivedCoreProperties)

ชื่ออักขระ รหัส ช่องคัดลอก ข้อมูลตาม Unicode
Hangul Filler U+3164 ㅤ หมวด Lo (อักษร) ไม่ใช่ช่องว่าง แต่เป็นอักขระที่ Unicode ระบุว่าให้ไม่แสดงผล (Default Ignorable)
Braille Pattern Blank U+2800 ⠀ หมวด So (สัญลักษณ์) คือช่องเบรลล์ที่ไม่มีจุดเลย ไม่ใช่ช่องว่าง และไม่อยู่ในกลุ่ม Default Ignorable
Zero Width Space U+200B ​ หมวด Cf (จัดรูปแบบ) กว้างศูนย์ ไม่ใช่ช่องว่างตามนิยาม White_Space ใช้เป็นจุดที่ตัดบรรทัดได้
Halfwidth Hangul Filler U+FFA0 ᅠ หมวด Lo คล้าย U+3164 แต่เป็นแบบครึ่งความกว้าง และเป็น Default Ignorable
Word Joiner U+2060 ⁠ หมวด Cf กว้างศูนย์ มีหน้าที่ห้ามตัดบรรทัดตรงจุดนั้น เป็น Default Ignorable

ความกว้างที่มองเห็นจริงขึ้นกับฟอนต์และแอปที่ใช้แสดงผล เช่น U+2800 อาจแสดงเป็นช่องเล็กๆ หรือกล่องในฟอนต์ที่ไม่มีสัญลักษณ์เบรลล์ จึงควรลองดูในแอปปลายทางจริงก่อนใช้งานสำคัญ

ทำไมช่องว่างธรรมดาใช้แทนไม่ได้

ช่องว่างธรรมดา (U+0020) กับช่องว่างไม่ตัดบรรทัด (U+00A0) อยู่ในรายการ White_Space ของ Unicode ซึ่งโปรแกรมจำนวนมากใช้เป็นเกณฑ์ตัดช่องว่างหัวท้ายข้อความทิ้งก่อนบันทึก เมื่อทดสอบด้วยฟังก์ชัน trim() ของ JavaScript พบว่าช่องว่างธรรมดาถูกตัดจนข้อความเหลือว่าง แต่ U+3164, U+2800, U+200B, U+FFA0 และ U+2060 ไม่ถูกตัด เพราะไม่ได้เป็น White_Space

นี่คือเหตุผลที่ชื่อที่พิมพ์ด้วยการเคาะ Space อย่างเดียวมักถูกแอปปฏิเสธว่า "ห้ามเว้นว่าง" ขณะที่ตัวอักษรล่องหนผ่านเงื่อนไขนี้ได้ในหลายกรณี ข้อสำคัญคือผลทดสอบข้างต้นเป็นพฤติกรรมของ JavaScript เท่านั้น แต่ละแอปมีกฎของตัวเอง บางแอปตรวจอักขระกลุ่ม Default Ignorable แล้วปฏิเสธหรือลบทิ้ง จึงไม่มีตัวไหนที่การันตีว่าใช้ได้ทุกที่

วิธีคัดลอกตัวอักษรล่องหนไปใช้

  1. เลือกอักขระจากตารางด้านบน เริ่มจาก U+3164 ก่อน เพราะมีความกว้างเห็นผลชัด และเป็นตัวที่พบบ่อยในคู่มือการตั้งชื่อว่าง
  2. คัดลอก โดยคลิกสามครั้งที่ช่องคัดลอก (คอมพิวเตอร์) หรือแตะค้างแล้วเลือกคัดลอก (มือถือ) ถ้าเลือกไม่ติด ให้ลากคลุมจากท้ายข้อความของช่องข้างหน้าให้ครอบช่องคัดลอก วางลงโปรแกรมจดบันทึกก่อน แล้วลบส่วนที่เกินออกให้เหลือเฉพาะอักขระล่องหน
  3. วางในช่องปลายทาง เช่น ช่องชื่อ ช่องข้อความ หรือช่องไบโอ แล้วกดบันทึก
  4. ถ้าแอปไม่ยอมรับ ให้เปลี่ยนไปลองตัวถัดไป ลำดับที่แนะนำคือ U+3164, U+2800 แล้วจึง U+200B หรืออักขระอื่น

ถ้าต้องการวางหลายตัวต่อกันเพื่อให้ช่องกว้างขึ้น ให้คัดลอกตัวเดิมวางซ้ำ ไม่จำเป็นต้องผสมหลายชนิด แต่การผสมมีโอกาสทำให้บางแอปปฏิเสธเพราะตรวจพบอักขระผิดปกติ

ที่ที่คนมักลองใช้ตัวอักษรล่องหน

  • ชื่อไฮไลต์ ชื่อเล่น หรือชื่อโปรไฟล์: ใช้เมื่ออยากให้ช่องชื่อดูว่างเพื่อความมินิมอล
  • ข้อความว่างในแชท: ส่งข้อความที่ไม่มีตัวหนังสือ ซึ่งบางแอปไม่ยอมให้ส่งข้อความที่ว่างจริงๆ
  • ชื่อในเกมออนไลน์: เกมที่ไม่อนุญาตให้ใช้ช่องว่างล้วนในชื่อ ผู้เล่นบางคนลองใช้ตัวอักษรล่องหนแทน
  • เว้นระยะในไบโอหรือแคปชั่น: ทำย่อหน้าหรือเว้นบรรทัดในที่ที่ระบบตัดช่องว่างทิ้ง

แพลตฟอร์มเหล่านี้ปรับกฎการตรวจชื่อและข้อความได้ตลอดเวลา วิธีที่ใช้ได้เมื่อเดือนก่อนอาจใช้ไม่ได้ในเดือนนี้ บทความนี้จึงไม่รับรองผลกับแอปใดแอปหนึ่ง ให้ทดลองกับบัญชีของตัวเองและอ่านเงื่อนไขการใช้งานของแอปนั้นประกอบ

ตัวอักษรซ่อนที่ติดมากับข้อความโดยไม่รู้ตัว

ด้านกลับของเรื่องนี้คือ ข้อความที่คัดลอกมาจากเว็บ เอกสาร หรือแชท อาจมีตัวอักษรล่องหนปนมาด้วยโดยที่เราไม่ได้ตั้งใจ ผลที่พบบ่อยคือ

  • ค้นหาคำในเอกสารไม่เจอ ทั้งที่มองเห็นคำนั้นอยู่
  • วางชื่อหรือรหัสในแบบฟอร์มแล้วระบบแจ้งว่าไม่ถูกต้อง
  • ลิงก์ที่คัดลอกมาเปิดไม่ได้ เพราะมีอักขระซ่อนต่อท้าย
  • สองข้อความที่ดูเหมือนกันทุกตัว แต่โปรแกรมเทียบแล้วบอกว่าไม่เท่ากัน

เช็กด้วยตัวนับตัวอักษร

วิธีที่ง่ายที่สุดคือวางข้อความลงในเครื่องมือนับคำและตัวอักษรแล้วเทียบจำนวนตัวอักษรที่เครื่องมือรายงานกับจำนวนที่คุณนับด้วยสายตา ตัวอักษรล่องหนแต่ละตัวนับเป็น 1 ตัวอักษร ถ้าตัวเลขสูงกว่าที่เห็น แสดงว่ามีตัวซ่อนอยู่ รายละเอียดการนับภาษาไทยอ่านต่อได้ในบทความนับคำภาษาไทย

เช็กจากลิงก์ที่ถูกเข้ารหัส

ถ้าลิงก์ที่คัดลอกมามีรหัสแปลกๆ ต่อท้าย ให้ดูว่ารหัสตรงกับตารางนี้หรือไม่ ค่าด้านล่างคำนวณจากการเข้ารหัส UTF-8 ตามหลักเดียวกับที่อธิบายไว้ในบทความ URL Encode ลิงก์ภาษาไทย

อักขระ รหัส ไบต์ UTF-8 เมื่ออยู่ในลิงก์
Zero Width Space U+200B 3 %E2%80%8B
Hangul Filler U+3164 3 %E3%85%A4
Braille Pattern Blank U+2800 3 %E2%A0%80
Halfwidth Hangul Filler U+FFA0 3 %EF%BE%A0
Word Joiner U+2060 3 %E2%81%A0

ล้างตัวซ่อนออก

เมื่อพบว่ามีตัวซ่อน วิธีล้างที่ปลอดภัยที่สุดคือพิมพ์คำหรือรหัสนั้นใหม่ด้วยมือแทนการคัดลอก หรือวางข้อความผ่านโปรแกรมจดบันทึกแบบข้อความล้วนก่อน แล้วลบส่วนที่น่าสงสัยทิ้ง ถ้าต้องจัดรูปแบบข้อความทั้งก้อน การแปลงข้อความอย่างในบทความเปลี่ยนตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ไม่ได้รับประกันว่าจะลบตัวอักษรซ่อนให้ ควรเช็กซ้ำด้วยตัวนับตัวอักษรทุกครั้ง

ตัวอักษรล่องหนกับภาษาไทย

ภาษาไทยเขียนติดกันโดยไม่เว้นวรรคระหว่างคำ การตัดบรรทัดจึงต้องอาศัยพจนานุกรมของแอปหรือเบราว์เซอร์ ในมาตรฐานการตัดบรรทัดของ Unicode U+200B จัดอยู่ในกลุ่ม ZW ซึ่งหมายถึงจุดที่ตัดบรรทัดได้โดยไม่แสดงช่องว่าง นักพัฒนาเว็บจึงบางครั้งใช้แทรกเพื่อบอกเบราว์เซอร์ว่าตรงนี้ตัดได้ ส่วน U+2060 ทำหน้าที่ตรงข้าม คือห้ามตัดบรรทัดตรงจุดนั้น

ถ้าเขียนหน้าเว็บเอง ไม่ต้องวางตัวอักษรล่องหนลงไปในไฟล์ตรงๆ ให้ใช้รหัส HTML แทน เช่น ​ สำหรับ U+200B เพื่อให้เห็นในโค้ดชัดเจนและตรวจย้อนหลังได้ง่าย

ข้อควรระวังก่อนใช้

  • ชื่อล่องหนทำให้คนอื่นหาคุณไม่เจอ: เพื่อนหรือผู้ดูแลระบบอาจค้นชื่อคุณไม่พบ และบางแพลตฟอร์มอาจถือว่าชื่อผิดปกติ
  • อย่าใช้เพื่อหลอกลวงหรือเลี่ยงการตรวจสอบ: เช่น ปลอมชื่อให้เหมือนบัญชีอื่น หรือซ่อนข้อความเพื่อเลี่ยงตัวกรอง
  • ระวังในช่องรหัสผ่านหรือข้อมูลสำคัญ: ตัวซ่อนทำให้ตรวจทานด้วยสายตาไม่ได้ ผิดพลาดแล้วหาสาเหตุยาก
  • มาตรฐานด้านความปลอดภัยของ Unicode ไม่แนะนำให้ใช้ในชื่อระบุตัวตน: UTS #39 จัดอักขระกลุ่ม Default Ignorable เป็นสถานะ Restricted คือไม่ควรใช้ในตัวระบุหรือชื่อผู้ใช้

คำถามที่พบบ่อย

ตัวอักษรล่องหนกับตัวอักษรว่างต่างกันไหม

คนทั่วไปใช้เรียกสลับกัน ในทางเทคนิคช่องว่างจริงอยู่ในกลุ่ม White_Space ส่วนตัวอักษรล่องหนคืออักขระที่ไม่แสดงตัวหนังสือแต่ไม่ได้เป็นช่องว่างตามนิยามนั้น ความต่างนี้คือเหตุผลที่แอปปฏิบัติกับสองกลุ่มไม่เหมือนกัน

ตัวไหนใช้ได้ดีที่สุด

ไม่มีตัวที่ใช้ได้ทุกแอป ให้ลองตามลำดับ U+3164, U+2800, U+200B แล้วดูว่าแอปปลายทางยอมรับตัวไหน

ทำไมวางแล้วแอปบอกว่าชื่อไม่ถูกต้อง

แอปอาจตรวจและปฏิเสธอักขระกลุ่ม Default Ignorable หรือกำหนดให้ชื่อมีตัวอักษรที่มองเห็นอย่างน้อยหนึ่งตัว ลองเปลี่ยนเป็นอักขระอื่น หรือผสมกับตัวอักษรที่มองเห็นได้

ตัวอักษรล่องหนนับเป็นกี่ตัวอักษร

ตัวละ 1 ตัวอักษร แม้มองไม่เห็น เครื่องมือนับตัวอักษรของเว็บนี้ก็นับรวมให้เช่นกัน จึงใช้เช็กได้ว่าข้อความมีตัวซ่อนหรือไม่

ใช้ตัวอักษรล่องหนผิดกฎหมายหรือเปล่า

ตัวอักษรเหล่านี้เป็นอักขระมาตรฐานของ Unicode ที่ใช้ได้ตามปกติ ปัญหาอยู่ที่วิธีใช้ ถ้าใช้เพื่อหลอกลวงหรือฝ่าฝืนเงื่อนไขของแพลตฟอร์ม อาจถูกลบหรือถูกระงับบัญชีได้ ควรอ่านเงื่อนไขของแอปที่ใช้

ค้นเจอตัวอักษรล่องหนในไฟล์ของฉัน ต้องทำยังไง

ถ้ามาจากการคัดลอก ให้พิมพ์คำนั้นใหม่หรือวางผ่านโปรแกรมจดบันทึกแบบข้อความล้วนก่อน แล้วเช็กซ้ำด้วยตัวนับตัวอักษร

สรุป

ตัวอักษรล่องหนคืออักขระ Unicode ที่ไม่แสดงตัวหนังสือแต่นับเป็นตัวอักษรจริง ตัวที่นิยมใช้คือ U+3164 และ U+2800 ซึ่งไม่ถูกตัดทิ้งแบบช่องว่างธรรมดา แต่ผลกับแต่ละแอปไม่เหมือนกันและเปลี่ยนได้ ควรทดลองด้วยตัวเอง และอย่าลืมว่าตัวซ่อนอาจติดมากับข้อความที่คัดลอกมา ถ้าต้องการสัญลักษณ์อื่นๆ ที่มองเห็นได้ ลองใช้เครื่องมือสัญลักษณ์พิเศษที่คัดลอกได้ในคลิกเดียว ทำงานในเบราว์เซอร์ของคุณเอง ฟรี และไม่ต้องอัปโหลดข้อมูลใดๆ

แหล่งอ้างอิง: Unicode Character Database (UnicodeData, PropList.txt, DerivedCoreProperties.txt, LineBreak.txt เวอร์ชัน 18.0.0 จาก unicode.org) สำหรับหมวด คุณสมบัติ White_Space และ Default_Ignorable_Code_Point; UTS #39 Unicode Security Mechanisms (unicode.org/reports/tr39) เรื่องสถานะ Restricted ของอักขระ Default Ignorable; ผลทดสอบ trim() ของ JavaScript และรหัส UTF-8 คำนวณโดยทีมงานเมื่อ 16 ต.ค. 2569