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

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) ที่เข้มงวดปฏิเสธการแปล

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

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

ตัวสร้างการตั้งค่า Webpack

สร้าง webpack.config.js สำหรับ webpack 5 ทั้งแบบ JavaScript ล้วน React หรือ Vue พร้อม TypeScript, Babel, CSS หรือ Sass, รูปภาพ, HtmlWebpackPlugin, เซิร์ฟเวอร์สำหรับพัฒนา และคำสั่ง npm install

เครื่องแปลงฐานตัวเลข

แปลงตัวเลขระหว่างฐานสอง ฐานแปด ฐานสิบ ฐานสิบหก และฐานกำหนดเองตั้งแต่ 2 ถึง 36 พร้อมการแยกค่าประจำหลัก

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

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

ตัวแปลง Timestamp

แปลง timestamp ของ Unix ในหน่วยวินาทีหรือมิลลิวินาทีเป็นวันที่ที่อ่านง่ายในเขตเวลา UTC และเขตเวลาหลัก และแปลงวันที่กลับเป็นค่า epoch

เครื่องสุ่มที่อยู่

สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ

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

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

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