ไม่มีการอัปโหลด, 100% ในเครื่อง, ไม่มีบัญชี

บทความ

คำ ตัวอักษร และตัวพิมพ์เล็ก-ใหญ่: การนับข้อความทำงานอย่างไรจริง ๆ

การนับข้อความฟังดูเหมือนงานเดียวที่คอมพิวเตอร์ไม่มีทางผิดพลาดได้ แต่เครื่องมือสองตัวก็ยังรายงานตัวเลขต่างกันสำหรับย่อหน้าเดียวกันได้อย่างสบาย ๆ อิโมจิตัวเดียวอาจกินโควตา SMS ของคุณไปถึง 70 ตัวอักษร และ "280 ตัวอักษร" บน X ก็ไม่ได้หมายความอย่างที่เห็น เบื้องหลังงานประจำวันอย่างการเขียนให้พอดีกับขีดจำกัด การเปลี่ยนชื่อตัวแปร หรือการเติมข้อความลงในโมกอัพ มีกฎอยู่ไม่กี่ข้อที่ควรรู้ไว้ บทความนี้จะพาไล่ดูทีละข้อ โดยใช้เครื่องมือข้อความเล็ก ๆ บนเว็บไซต์นี้เป็นตัวอย่างประกอบ

อะไรถูกนับเป็นหนึ่งคำ

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

หนึ่งตัวอักษรไม่ได้เป็นสัญลักษณ์เดียวเสมอไป

การนับตัวอักษรยิ่งคลุมเครือกว่า เพราะข้อความแบบยูนิโค้ดมีหลายชั้น สิ่งที่คุณรับรู้ว่าเป็นตัวอักษรหนึ่งตัว (กราฟีม) อาจถูกสร้างขึ้นจากหลายโค้ดพอยต์ และแต่ละโค้ดพอยต์ก็ใช้พื้นที่หนึ่งหรือสองหน่วยจากหน่วย 16 บิตที่คุณสมบัติ length ของ JavaScript นับอยู่ อิโมจิหน้ายิ้มกว้างเป็นหนึ่งกราฟีมแต่เป็นสองหน่วยดังกล่าว เครื่องมือนับแบบง่ายจึงรายงานว่า 2 อิโมจิครอบครัวที่รวมอิโมจิรูปคนหลายตัวเข้าด้วยกันเป็นหนึ่งกราฟีม ห้าโค้ดพอยต์ และแปดหน่วย แม้แต่ข้อความธรรมดาก็มีปัญหานี้เช่นกัน คำว่า "café" อาจเก็บโดยให้ é เป็นหนึ่งโค้ดพอยต์ หรือเก็บเป็น e ตามด้วยเครื่องหมายเน้นเสียงแบบผสม ซึ่งหน้าจอแสดงผลเหมือนกันแต่ผลการนับต่างกัน นี่คือเหตุผลที่เครื่องมือนับสองตัวให้ผลไม่ตรงกัน เพราะทั้งสองวัดคนละชั้น กฎการรวมโค้ดพอยต์ให้เป็นตัวอักษรที่ผู้ใช้รับรู้ได้ถูกกำหนดเป็นมาตรฐานไว้ในภาคผนวกการแบ่งส่วนข้อความของยูนิโค้ด (UAX #29) และเครื่องมือนับที่ออกแบบมาอย่างดีก็ทำตามมาตรฐานนี้

สามข้อความที่วัดในสามชั้นของยูนิโค้ด: อิโมจิหน้ายิ้มกว้างคือ 1 กราฟีมและ 2 หน่วย UTF-16 อิโมจิครอบครัวคือ 1 กราฟีม 5 โค้ดพอยต์ และ 8 หน่วย ส่วน café ที่แยกส่วนแล้วคือ 4 กราฟีมแต่ 5 โค้ดพอยต์

ขีดจำกัดที่คุณกำลังนับเพื่อสิ่งนี้จริง ๆ

ขีดจำกัดตัวอักษรคือจุดที่การนับกลายเป็นเรื่องเงิน SMS หนึ่งข้อความบรรจุได้ 160 ตัวอักษรในชุดตัวอักษร GSM-7 แบบกระชับ แต่ตัวอักษรเพียงตัวเดียวที่อยู่นอกชุดนี้ (อิโมจิ หรือตัวอักษรที่ชุดนี้ไม่มี) จะเปลี่ยนข้อความทั้งหมดไปเป็น UCS-2 ทันทีและทำให้ขีดจำกัดลดลงเหลือ 70 ตัวอักษร ข้อความยาวจะถูกแบ่งเป็นส่วนละ 153 หรือ 67 ตัวอักษร โดยแต่ละส่วนคิดค่าบริการแยกกัน X อนุญาตให้ใช้ 280 ตัวอักษรต่อโพสต์ แต่ให้น้ำหนักต่างกัน ลิงก์ทุกลิงก์ถูกนับเป็น 23 ตัวอักษรไม่ว่าความยาวจริงจะเป็นเท่าใด และอิโมจิรวมถึงตัวอักษร CJK (จีน ญี่ปุ่น เกาหลี) ส่วนใหญ่ถูกนับเป็น 2 ตัวอักษร ส่วนสนิปเป็ตผลการค้นหามีขีดจำกัดที่ยืดหยุ่นกว่า Google ตัดหัวเรื่องและคำอธิบายตามความกว้างเป็นพิกเซล ตัวเลขที่คุ้นเคยอย่างหัวเรื่อง 60 ตัวอักษรและคำอธิบาย 155 ตัวอักษรจึงเป็นธรรมเนียมปฏิบัติ ไม่ใช่การรับประกัน เมื่อขีดจำกัดมีความสำคัญจริง ๆ ให้นับด้วยกฎเดียวกับที่แพลตฟอร์มนั้นใช้ และเผื่อพื้นที่ไว้บ้าง

ตัวพิมพ์เล็ก-ใหญ่เป็นแค่ธรรมเนียมปฏิบัติ และแต่ละรูปแบบก็มีที่ทางของตัวเอง

เรื่องนี้เกี่ยวกับข้อความที่เขียนด้วยอักษรละติน เช่น ชื่อตัวแปรในโค้ดหรือหัวเรื่องภาษาอังกฤษ เพราะภาษาไทยเองไม่มีการแบ่งตัวพิมพ์เล็กตัวพิมพ์ใหญ่ การเปลี่ยนตัวพิมพ์เล็ก-ใหญ่ฟังดูเป็นเรื่องเล็กน้อยจนกว่าคุณจะเจอธรรมเนียมปฏิบัติที่ซ้อนทับกันอยู่ ร้อยแก้วภาษาอังกฤษมี Title Case ซึ่งเป็นที่นิยมในหัวข้อข่าวของสหรัฐฯ และ sentence case ซึ่งคู่มือการเขียนของยุโรปส่วนใหญ่นิยมมากกว่า ส่วนโค้ดก็มีตระกูลของตัวเอง: camelCase สำหรับตัวแปรใน JavaScript และ Java, PascalCase สำหรับชื่อคลาสและคอมโพเนนต์, snake_case ใน Python และฐานข้อมูล, SCREAMING_SNAKE_CASE สำหรับค่าคงที่ และ kebab-case สำหรับชื่อคลาส CSS ชื่อไฟล์ และ URL slug ซึ่งการใช้ตัวพิมพ์เล็กช่วยหลีกเลี่ยงกับดักคลาสสิกของลิงก์ที่ต่างกันแค่ตัวพิมพ์เล็กตัวพิมพ์ใหญ่เท่านั้น การแปลงชื่อตัวแปรไม่กี่ตัวด้วยมือไม่มีปัญหาอะไร แต่การแปลงรายการแปดสิบรายการคือวิธีที่ทำให้เกิดข้อผิดพลาดจากการพิมพ์ เครื่องมือแปลงตัวพิมพ์เล็ก-ใหญ่ทำการแปลงนี้อย่างเป็นกลไก รวมถึงส่วนที่ยุ่งยาก เช่น การตัดสินใจว่าจะจัดการกับตัวย่อและตัวคั่นที่มีอยู่แล้วอย่างไร

วลี user profile page เขียนด้วยตัวพิมพ์เล็ก-ใหญ่หกรูปแบบ: camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case และ Title Case

ข้อความตัวเติม และไฟล์ที่โทรศัพท์ของคุณไม่ยอมเปิด

ยังมีอีกสองงานที่ทำให้ชุดนี้ครบถ้วน เลย์เอาต์มักถูกประเมินด้วยข้อความตัวเติม เพราะประโยคจริงจะดึงความสนใจไปที่ความหมายของมัน lorem ipsum ใช้ได้ผลก็เพราะมันเกือบจะอ่านออกแต่ไม่อ่านออกจริง ๆ เนื่องจากเป็นภาษาละติน เครื่องมือสร้างของเราสร้างข้อความนี้ได้ทีละย่อหน้า ทีละประโยค หรือทีละคำ ทำให้โมกอัพเติมได้ยาวสมจริงแทนที่จะวางข้อความก้อนเดียวซ้ำ ๆ และเมื่อมีใครส่งไฟล์ .md, .json, .csv หรือ .log ที่โทรศัพท์ไม่ยอมเปิด เครื่องมือดูข้อความบนเบราว์เซอร์ก็แสดงเนื้อหาให้ดูได้โดยไม่ต้องติดตั้งโปรแกรมแก้ไขหรือส่งไฟล์ไปยังเว็บไซต์แปลงไฟล์ใด ๆ ทั้งหมดที่กล่าวมา รวมถึงการนับด้วย ทำงานอยู่ในเบราว์เซอร์ของคุณทั้งหมด ข้อความไม่เคยออกจากอุปกรณ์ของคุณเลย ซึ่งสำคัญยิ่งกว่าปกติเมื่อสิ่งที่คุณกำลังวัดคือฉบับร่าง สัญญา หรือล็อกที่เต็มไปด้วยเส้นทางไฟล์ภายใน

เครื่องมือที่กล่าวถึงในบทความนี้

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

หนึ่งหน้ากระดาษบรรจุกี่คำ?

ธรรมเนียมการพิมพ์เอกสารอยู่ที่ประมาณ 500 คำต่อหน้าสำหรับระยะบรรทัดเดี่ยว และประมาณ 250 คำสำหรับระยะบรรทัดคู่ โดยสมมติว่าใช้ฟอนต์ขนาดมาตรฐาน 12 พอยต์บนกระดาษ A4 หรือ letter เอกสารจริงจะเบี่ยงเบนไปจากตัวเลขนี้ทุกครั้งที่ฟอนต์ ระยะขอบ หรือหัวข้อเปลี่ยนไป นี่คือเหตุผลที่งานมอบหมายและงานส่งต่าง ๆ หันมาระบุจำนวนคำแทนจำนวนหน้ามากขึ้นเรื่อย ๆ ถ้าคุณมีข้อความอยู่แล้ว ให้นับโดยตรงและข้ามการประมาณไปเลย ธรรมเนียมเรื่องจำนวนหน้ามีประโยชน์เฉพาะก่อนที่ข้อความจะถูกเขียนขึ้นเท่านั้น

lorem ipsum แปลว่าอะไรกันแน่?

มันคือภาษาละตินที่ถูกสับเปลี่ยนคำ ไม่ใช่ข้อความไร้ความหมาย ข้อความมาตรฐานนี้ถูกตัดและสับเปลี่ยนใหม่จากหนังสือ De finibus bonorum et malorum ของ Cicero ซึ่งเป็นตำราปรัชญาจากปีที่ 45 ก่อนคริสตกาล ส่วนคำว่า "dolorem ipsum" แปลว่า "ความเจ็บปวดในตัวมันเอง" การสับเปลี่ยนนี้แหละคือประเด็นสำคัญ ข้อความดูเหมือนภาษาธรรมชาติ มีความยาวคำและจังหวะประโยคที่ดูสมเหตุสมผล แต่ต่อต้านการถูกอ่านจริง ๆ ผู้ชมจึงตัดสินเลย์เอาต์แทนที่จะตัดสินเนื้อหา การแพร่หลายในยุคใหม่มักได้รับการยกให้เป็นผลจากแผ่นลอกลาย Letraset ในทศวรรษ 1960 และซอฟต์แวร์จัดพิมพ์บนเดสก์ท็อปในทศวรรษ 1980

ทำไมแพลตฟอร์มถึงนับตัวอักษรได้น้อยกว่าเครื่องมือของฉัน?

เพราะแพลตฟอร์มนับด้วยน้ำหนักของตัวเอง X เริ่มต้นที่ 280 แต่คิดลิงก์ทุกลิงก์เป็น 23 ตัวอักษร และคิดอิโมจิรวมถึงตัวอักษร CJK ส่วนใหญ่เป็น 2 ตัวอักษรต่อตัว เกตเวย์ SMS จะเปลี่ยนข้อความทั้งหมดจากชุดตัวอักษร GSM-7 ที่มี 160 ตัวอักษรไปเป็นโหมด UCS-2 ที่มี 70 ตัวอักษร ทันทีที่มีตัวอักษรแม้เพียงตัวเดียวที่ต้องใช้โหมดนี้ และแพลตฟอร์มใด ๆ ก็อาจนับหน่วยรหัสแทนที่จะนับกราฟีม ทำให้อิโมจิครอบครัวเพียงตัวเดียวอาจกินขีดจำกัดไปถึง 8 ตัวอักษร เมื่อตัวเลขบนปุ่มไม่ตรงกับเครื่องมือนับของคุณ กฎของแพลตฟอร์มจะเป็นฝ่ายชนะ ให้เขียนโดยเผื่อพื้นที่ไว้ หรือตรวจสอบด้วยเครื่องมือนับของแพลตฟอร์มนั้นเองก่อนส่ง

แหล่งข้อมูล