AliceLium
code

HTML Entity เข้ารหัส / ถอดรหัส

แปลง < > & " ' เป็น entity และถอด &#3585; กลับเป็นภาษาไทย พร้อมโหมดกู้ข้อมูลไทยจากฐานข้อมูลระบบเก่า

lockทำงานในเครื่องคุณ ไฟล์ไม่ถูกอัปโหลด boltเห็นผลทันที ไม่ต้องรอคิว check_circleใช้ได้ไม่จำกัด ไม่นับโควตา
lock_open

เข้าสู่ระบบเพื่อใช้เครื่องมือนี้ — ฟรี

สมัครฟรีในไม่ถึงนาที ไม่ต้องใส่บัตรเครดิต · เก็บประวัติงานของคุณให้อัตโนมัติ

boltสมัครฟรี — ใช้ได้ทันที
มีบัญชีแล้ว?
เข้าสู่ระบบ
check_circleฟรี auto_deleteไฟล์ลบใน 1 ชม. historyเก็บประวัติงาน 7 วัน

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

help
ทำไมข้อมูลภาษาไทยในฐานข้อมูลเก่าถึงเก็บเป็น &#3585;&#3586; ทั้งตาราง?
expand_more

เป็นวิธีเอาตัวรอดของนักพัฒนาไทยยุคปี 2000 ตอนนั้น MySQL ส่วนใหญ่ตั้ง collation เป็น latin1 และเว็บเซิร์ฟเวอร์กับเบราว์เซอร์ยังตกลงเรื่อง charset กันไม่ลงตัว ภาษาไทยที่เขียนลงไปตรง ๆ จึงกลายเป็นตัวประหลาดได้ตลอดเวลา ทางแก้ที่ได้ผลแน่นอนคือแปลงอักษรไทยทุกตัวเป็นเลข HTML entity ก่อนบันทึก เพราะเลขพวกนั้นเป็น ASCII ล้วน ผ่านทุกระบบได้โดยไม่เพี้ยน ข้อเสียคือพอถึงวันย้ายขึ้นระบบใหม่ที่เป็น UTF-8 ข้อมูลทั้งก้อนจะอ่านไม่ออก ต้องถอดกลับก่อน ซึ่งคือสิ่งที่ปุ่ม “ถอดข้อมูลไทยจากระบบเก่าทั้งก้อน” ทำให้

help
ตอน migrate ฐานข้อมูล ทำไมไม่ควรถอด entity ทุกตัวรวดเดียว?
expand_more

เพราะในข้อมูลชุดเดียวกันมักมี entity สองประเภทที่ความหมายต่างกันสิ้นเชิงปนอยู่ ประเภทแรกคือเลขที่แทนอักษรไทย ซึ่งต้องถอดกลับ ประเภทที่สองคือ &amp;amp; &amp;lt; &amp;gt; ที่ถูก escape ไว้ถูกต้องแล้วเพื่อกันไม่ให้ข้อความไปทำ HTML ของหน้าเว็บพัง ถ้าถอดตัวที่สองด้วย ข้อมูลที่เคยปลอดภัยจะกลายเป็นแท็กจริงทันทีที่ขึ้นระบบใหม่ อาจเปิดช่อง XSS ให้เว็บของคุณเอง เครื่องมือนี้จึงมีโหมดที่แตะเฉพาะเลขในช่วงอักษรไทย (U+0E00 ถึง U+0E7F) และปล่อยอย่างอื่นไว้เหมือนเดิมทุกตัว

help
&#3585; กับ &#x0E01; ต่างกันอย่างไร ใช้แบบไหนดี?
expand_more

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

help
ต้องเข้ารหัสแค่ไหนถึงจะพอ มีสามโหมดให้เลือกควรใช้ตัวไหน?
expand_more

ถ้าเอาข้อความไปวางเป็นเนื้อหาในหน้าเว็บ UTF-8 ปกติ ให้ใช้ “เฉพาะที่จำเป็น” พอ เพราะเปลี่ยนแค่ห้าตัวที่ทำให้ HTML พัง ภาษาไทยยังอ่านออกเหมือนเดิมและไฟล์ไม่บวม ใช้ “ทุกตัวที่ไม่ใช่ ASCII” เมื่อปลายทางบังคับว่าไฟล์ต้องเป็น ASCII ล้วน เช่นเทมเพลตอีเมลรุ่นเก่า หรือระบบที่ตั้ง charset ไม่ได้ ส่วน “สำหรับใส่ในแอตทริบิวต์” ใช้เมื่อค่านั้นจะไปอยู่ใน title= หรือ alt= โหมดนี้เข้ารหัสแม้แต่ช่องว่าง ผลลัพธ์จึงดูรกผิดปกติ ซึ่งตั้งใจให้เป็นแบบนั้น เพราะแอตทริบิวต์ที่ลืมครอบเครื่องหมายคำพูดจะถูกช่องว่างตัดจบแล้วโดนแทรกโค้ดต่อได้

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

ดูทั้งหมดchevron_right