เอนโคเดอร์สำหรับการพิมพ์แบบอ้างอิง

Quoted-printable เป็นรูปแบบการเข้ารหัสที่ช่วยให้ข้อความขนาด 8 บิตสามารถส่งผ่านระบบอีเมลที่ใช้ 7 บิตได้อย่างถูกต้อง โดยเครื่องเข้ารหัสนี้จะแปลงไบต์ทุกตัวที่มีค่ามากกว่า 126 (รวมถึงไบต์พิเศษบางชนิด เช่น =) ให้กลายเป็นค่าเฮกซาเดซิมอล =XX เพื่อใช้ในการแทนตัวอักษรเฉพาะ ส่วนการเปลี่ยนบรรทัดจะทำโดยอัตโนมัติที่ตำแหน่ง 76 ตัวอักษร และให้ผลลัพธ์เป็นสตริงที่สามารถนำไปใส่ในเนื้อหาไฟล์ MIME รูปแบบ Content-Transfer-Encoding: quoted-printable ได้

วิธีการเข้ารหัสข้อมูลให้อยู่ในรูปแบบที่สามารถพิมพ์ได้โดยใช้เครื่องอักษร

  1. 1

    วางข้อความของคุณ

    โดยค่าเริ่มต้น ข้อมูลที่ป้อนจะถูกประมวลผลในรูปแบบ UTF-8 ตัวอักษรที่มีเครื่องหมายพิเศษและอีโมจิจะถูกแปลงเป็นลำดับไบต์หลายตัว

  2. 2

    คลิกเพื่อเข้ารหัส

    ไบต์ที่อยู่นอกช่วง ASCII สำหรับการพิมพ์ รวมถึงเครื่องหมาย = แบบตัวอักษรจริง จะถูกแปลงเป็นสัญลักษณ์ escape ชนิด =HH ในรูปแบบเลขฐาน 16 ที่เขียนด้วยตัวพิมพ์ใหญ่

  3. 3

    ใช้การแบ่งบรรทัดแบบนุ่ม

    บรรทัดที่มีความยาวเกิน 76 ตัวอักษรจะถูกแบ่งด้วยเครื่องหมาย = และคำสั่ง CRLF โดยระบบ MTA จะทำการรวมบรรทัดเหล่านั้นกลับเข้าด้วยกันอีกครั้ง

กฎเกณฑ์ (ฉบับย่อ)

RFC 2045 กำหนดคำศัพท์ว่า “quoted-printable” โดยประเด็นสำคัญมีดังนี้:

ช่วงไบต์ การจัดการ
33 ถึง 126 ยกเว้น = (61) พิมพ์ตามสภาพเดิม
9 (แท็บ), 32 (ช่องว่าง) รูปแบบเดิม เว้นแต่จะอยู่ท้ายบรรทัด
= (61) มักถูกเรียกอีกชื่อว่า =3D
ส่วนอื่นๆ ทั้งหมด หลบหนีไปในรูปแบบ =HH
ความยาวบรรทัดมากกว่า 76 ตัวอักษร ปรับรูปแบบการพันอักษรแบบนุ่มโดยใช้ = + CRLF

ทำไมสิ่งนี้จึงมีอยู่

โดยประวัติศาสตร์ SMTP ได้รับการรับประกันว่าจะส่งข้อมูลในรูปแบบ 7 บิตอย่างถูกต้องและไม่มีข้อผิดพลาด หากข้อมูลอยู่นอกช่วงดังกล่าว อาจถูกตัดทอน กลับค่า หรือแบ่งส่วนได้ ส่วนรูปแบบ Quoted-printable จะทำให้เนื้อหาของข้อความสามารถอ่านได้อย่างชัดเจนเมื่อเปิดในโปรแกรมแก้ไขข้อผิดพลาด (ต่างจาก base64 ที่แสดงผลในรูปแบบไม่โปร่งใส) และยังคงปลอดภัยสำหรับการส่งข้อมูล

ข้อผิดพลาดที่พบบ่อย

  • ช่องว่างที่อยู่หลัง: ช่องว่างที่ปลายบรรทัดต้องถูกเข้ารหัสเป็น =20 มิฉะนั้นระบบส่งอีเมลจะตัดช่องว่างนั้นออกไป
  • จุดสิ้นสุดบรรทัด: ควรใช้ CRLF แทน LF โดยเฉพาะอย่างยิ่ง เนื่องจากหัวข้อของ RFC 5322 มีข้อกำหนดให้ใช้ CRLF
  • ให้เริ่มต้นด้วยการแปลงข้อความเป็นไบต์ UTF-8 ก่อน จากนั้นจึงแปลงเป็นรูปแบบที่สามารถแสดงเครื่องหมายอ้างอิงได้ หากทำในลำดับที่ผิด จะทำให้ตัวอักษรที่มีเครื่องหมายผิดรูป

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

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

นั่นคืออักขระแบบตัวอักษรที่ใช้เครื่องหมายอัญมณีแบบเดียวทางด้านขวา (U+2019) ซึ่งถูกเข้ารหัสในรูปแบบไบต์ UTF-8 โดยไคลเอ็นต์ที่ไม่เข้าใจหลักการการแสดงผลของเครื่องหมายอัญมณีจะแสดงข้อมูลที่ผ่านการแปลงเป็นรูปแบบมาตรฐาน (raw escapes) แทน

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

ใช่ ข้อความจะถูกส่งไปยังเว็บไซต์เพื่อเข้าหรือถอดรหัส อย่าวางรหัสผ่าน คีย์ส่วนตัว หรือข้อความลับ

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

ตัวตรวจสอบอีเมล

ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

เครื่องมือสร้าง EditorConfig

สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข

แปลงจาก CSV เป็น JSON

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

เครื่องมือนี้มีให้บริการในภาษาอื่น