อักขระที่มองไม่เห็นในข้อความ: ซ่อนอยู่ที่ไหนและลบออกอย่างไร
อักขระที่มองไม่เห็นคือโค้ดพอยต์ของ Unicode ที่ไม่แสดงผล เช่น ช่องว่างความกว้างศูนย์ ช่องว่างที่ตัดบรรทัดไม่ได้ และเครื่องหมายทิศทางการเขียน อักขระเหล่านี้ดูเหมือนเว้นวรรคธรรมดาหรือไม่มีอะไรเลย ข้อความจึงดูปกติ แต่การค้นหา โค้ด และการตรวจสอบแบบฟอร์มจะมองว่าเป็นข้อความคนละชุด คุณหาอักขระเหล่านี้ได้โดยตรวจดูโค้ดพอยต์ และลบออกได้โดยลบหรือแทนที่อักขระตัวนั้นโดยเฉพาะ
ลบอักขระที่มองไม่เห็นมีอักขระที่มองไม่เห็นปนอยู่ในข้อความใช้ฟรีมันมาจากไหน
อักขระที่มองไม่เห็นส่วนใหญ่มาจากการคัดลอก ไม่ได้มาจากการพิมพ์:
- เว็บไซต์ เว็บไซต์ใช้ช่องว่างที่ตัดบรรทัดไม่ได้ (U+00A0) เพื่อไม่ให้คำสองคำขาดออกจากกันตรงขอบบรรทัด และใช้ช่องว่างความกว้างศูนย์ (U+200B) เพื่อบอกจุดที่คำยาวอาจตัดได้ เมื่อคัดลอกย่อหน้า อักขระเหล่านี้ก็ถูกคัดลอกไปด้วย
- โปรแกรมประมวลผลคำ มีการแทรกเครื่องหมายขีดกลางแบบอ่อน (U+00AD) สำหรับการตัดคำ อักขระนี้จะไม่เห็นจนกว่าบรรทัดจะถูกตัดตรงจุดนั้น และโปรแกรมบางตัวยังแทรกช่องว่างที่ตัดบรรทัดไม่ได้โดยอัตโนมัติในบางตำแหน่งด้วย
- แอปแชตและอีเมล ข้อความที่คัดลอกจากแชตหรืออีเมลอาจมีตัวเชื่อมความกว้างศูนย์และเครื่องหมายทิศทาง โดยเฉพาะเมื่อข้อความผสมหลายภาษา
- ข้อความที่มีหลายทิศทาง ภาษาอาหรับ ฮีบรู และข้อความที่ผสมกันใช้เครื่องหมายทิศทาง เช่น เครื่องหมายจากซ้ายไปขวา (U+200E) เครื่องหมายจากขวาไปซ้าย (U+200F) และอักขระฝังและแทนที่ (U+202A ถึง U+202E) อักขระเหล่านี้ควบคุมการแสดงผลของบรรทัด ไม่ได้เปลี่ยนความหมายของข้อความ
- เครื่องหมายลำดับไบต์ เครื่องหมายลำดับไบต์ (BOM, U+FEFF) ที่จุดเริ่มต้นของไฟล์เป็นลายเซ็นที่โปรแกรมแก้ไขบางตัวเขียนไว้ มองไม่เห็น แต่จะกลายเป็นอักขระตัวแรกจริง ๆ เมื่ออ่านไฟล์เป็นข้อความธรรมดา
- หน้าต่างแชต AI ข้อความที่คัดลอกจากอินเทอร์เฟซแชต AI บางตัวก็อาจมีอักขระเหล่านี้ได้เช่นกัน สาเหตุที่เป็นไปได้มากที่สุดคือวิธีการแสดงผลและคัดลอกข้อความ จึงไม่ควรมองว่าเป็นสัญญาณของเจตนาใด ๆ
ทำไมมันจึงก่อปัญหา
อักขระที่มองไม่เห็นแต่ละตัวคือโค้ดพอยต์จริง จึงเปลี่ยนข้อความได้แม้หน้าจอจะดูเหมือนเดิมทุกประการ:
- การค้นหาล้มเหลว ช่องว่างความกว้างศูนย์อยู่กลางคำจะทำให้การจับคู่ผิดพลาด ผลคือการค้นหาคำนั้นไม่พบอะไรเลย
- โค้ดพัง ช่องว่างที่ตัดบรรทัดไม่ได้ในไฟล์ซอร์สโค้ดเป็นข้อผิดพลาดทางไวยากรณ์ในภาษาโปรแกรมหลายภาษา และข้อผิดพลาดนั้นมักชี้ไปที่บรรทัดที่ดูถูกต้องสมบูรณ์ คู่มือ เรื่องเครื่องหมายคำพูดโค้ง อธิบายปัญหาการวางข้อความอีกแบบที่พบบ่อยในโค้ด
- การตรวจสอบแบบฟอร์มปฏิเสธข้อมูล ที่อยู่อีเมลที่มีช่องว่างความกว้างศูนย์หลัง @ ดูเหมือนถูกต้อง แต่จะไม่ผ่านการตรวจสอบ
- จำนวนนับคลาดเคลื่อน การนับตัวอักษรจะรวมหรือไม่รวมอักขระเหล่านี้ขึ้นอยู่กับเครื่องมือ ข้อความเดียวกันจึงอาจได้ผลรวมต่างกันสองค่า ลองนับข้อความก่อนและหลังการทำความสะอาดด้วย เครื่องนับคำ เพื่อดูความต่าง
ตัวอย่างเล็ก ๆ คำว่า "invoice" มีเจ็ดตัวอักษร ถ้ามีช่องว่างความกว้างศูนย์อยู่ข้างใน คำเดียวกันจะยาวแปดโค้ดพอยต์ แต่บนหน้าจอยังดูเหมือนเดิมทุกประการ การค้นหา "invoice" จะไม่พบข้อความเวอร์ชันที่สอง
วิธีตรวจหาอักขระเหล่านี้
การดูข้อความด้วยตาไม่ช่วยอะไร ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้:
- วางข้อความลงในเครื่องมือที่แสดงรายการโค้ดพอยต์ เช่น ลบอักขระที่มองไม่เห็น ซึ่งจะรายงานสิ่งที่พบก่อนที่จะมีการเปลี่ยนแปลงใด ๆ
- ในโปรแกรมแก้ไขโค้ด ให้เปิดการตั้งค่าที่แสดงช่องว่างหรืออักขระพิเศษ ช่องว่างที่ตัดบรรทัดไม่ได้จะปรากฏเป็นเครื่องหมายที่ต่างจากช่องว่างปกติ
- ในภาษาโปรแกรม ให้พิมพ์โค้ดพอยต์ของสตริงที่น่าสงสัย เช่นใน Python คำสั่ง
[hex(ord(c)) for c in text]จะแสดงค่าของแต่ละตัว ช่องว่างที่ตัดบรรทัดไม่ได้จะขึ้นเป็น 0xa0 และช่องว่างความกว้างศูนย์จะขึ้นเป็น 0x200b
วิธีลบอักขระเหล่านี้
การลบควรทำอย่างเจาะจง ถ้าลบอักขระที่ไม่ใช่ ASCII ทั้งหมด จะทำให้เครื่องหมายกำกับเสียง เครื่องหมายคำพูด และตัวอักษรจากภาษาอื่นหายไปด้วย ให้ทำดังนี้แทน:
- แทนที่ช่องว่างที่ตัดบรรทัดไม่ได้ด้วยช่องว่างปกติ เพราะส่วนใหญ่แล้วตั้งใจให้เป็นช่องว่าง
- ลบช่องว่างความกว้างศูนย์ เครื่องหมายขีดกลางแบบอ่อน เครื่องหมายลำดับไบต์ และเครื่องหมายทิศทางที่หลงเหลือ
- คงตัวอักษรที่มีเครื่องหมายกำกับ เครื่องหมายคำพูดโค้ง และเครื่องหมายวรรคตอนที่ถูกต้องไว้
แก้ข้อความที่วางมา ถูกออกแบบมาสำหรับข้อความที่คัดลอกมาจากที่อื่น ให้ใช้เมื่อข้อความที่คัดลอกมีการขึ้นบรรทัดใหม่ที่ผิดพลาดหรือการเว้นวรรคที่แปลกด้วย
วิธีทำด้วย fixmint
- วางข้อความลงในช่อง ข้อความของคุณ
- อ่านรายการสิ่งที่พบ อักขระแต่ละตัวจะมีชื่อกำกับ เช่น ZWSP สำหรับช่องว่างความกว้างศูนย์ และมีเครื่องหมายบอกว่าจะเกิดอะไรขึ้นกับอักขระนั้น
- ติ๊ก คงตัวเชื่อมในอีโมจิไว้ ไว้ เพื่อให้ลำดับอีโมจิยังแสดงเป็นสัญลักษณ์เดียว
- ติ๊ก แปลงเครื่องหมายคำพูดโค้ง ขีดกลางและขีดยาว และ … เป็น ASCII ธรรมดาด้วย เฉพาะกับโค้ดหรือข้อมูลเท่านั้น จากนั้นใช้ คัดลอก หรือ ดาวน์โหลด .txt
กรณีพิเศษ
- ลำดับอีโมจิใช้ตัวเชื่อมความกว้างศูนย์โดยตั้งใจ การลบออกจะทำให้อีโมจิหนึ่งตัวแยกเป็นหลายสัญลักษณ์
- ช่องว่างที่ตัดบรรทัดไม่ได้ถูกต้องในการจัดพิมพ์บางแบบ เช่นระหว่างตัวเลขกับหน่วย และในเครื่องหมายวรรคตอนภาษาฝรั่งเศสบางกรณี ให้แทนที่เฉพาะเมื่อคุณแน่ใจว่าเป็นช่องว่างที่หลงเหลือ
- เมื่อทำความสะอาดข้อความเสร็จแล้ว ให้ เปรียบเทียบข้อความ กับต้นฉบับเพื่อดูว่ามีอะไรเปลี่ยนไปบ้างอย่างชัดเจน
คำตอบสั้น ๆ
อักขระที่มองไม่เห็นเป็นสัญญาณว่า AI เขียนข้อความหรือไม่?
ไม่ใช่ อักขระเหล่านี้มาจากเว็บไซต์ โปรแกรมประมวลผลคำ แอปแชต และการคัดลอกวางทั่วไป การมีอยู่ของมันไม่ได้บ่งบอกว่าใครหรืออะไรเป็นผู้เขียนข้อความ
ถ้าลบอักขระที่ไม่ใช่ ASCII ทั้งหมด ปัญหาจะหายไปหรือไม่?
ไม่หาย เพราะจะลบเครื่องหมายกำกับเสียง เครื่องหมายคำพูด และตัวอักษรจากภาษาอื่นไปด้วย ให้ลบเฉพาะโค้ดพอยต์ที่มองไม่เห็นและเจาะจงแทน
ฉันจะรู้ได้อย่างไรว่าสตริงมีอักขระที่มองไม่เห็นหรือไม่?
ให้เปรียบเทียบความยาวของสตริงกับจำนวนตัวอักษรที่มองเห็นได้ หรือวางลงในเครื่องมือที่แสดงโค้ดพอยต์ หากจำนวนต่างกัน แสดงว่ามีบางอย่างที่มองไม่เห็นซ่อนอยู่ข้างใน
แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI
ความคิดเห็น
ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย


