การใช้“ utf8 = ✓” ดีกว่าที่จะ“ utf8 = จริง” หรือไม่?


569

ฉันเพิ่งเห็น URI บางอย่างที่มีพารามิเตอร์การสืบค้น "utf8 = ✓" ความประทับใจครั้งแรกของฉัน (หลังจากคิดว่า "mmm, ดูดี") คือสิ่งนี้สามารถใช้เพื่อตรวจจับการเข้ารหัสอักขระที่ไม่สมบูรณ์

ดังนั้นนี่เป็นวิธีที่ดีกว่าในการแก้ไขปัญหาที่อาจเกิดขึ้นจากการเข้ารหัสอักขระหรือเป็นเพียงนักพัฒนาที่สนุกกับการแฮ็ค


7
ฉันไม่เห็นด้วย. มีแบบแผนที่ดูเหมือน URN และใช้พารามิเตอร์การสืบค้นเช่น Bitcoin URIs ไม่ได้ จำกัด อยู่ที่เบราว์เซอร์ ดูen.wikipedia.org/wiki/URI_scheme คำถามนี้อาจกล่าวถึงกรณีทั่วไปที่จำเป็นต้องมีการเข้ารหัสอักขระเมื่อเบราว์เซอร์เข้าถึงตัวจัดการโปรโตคอล
Gary Rowe

3
ยกตัวอย่าง URL เหล่านี้หรือไม่เกิดขึ้น
hakre

10
ปิดหัวข้อ แต่ตกลง นี่คือเงินบริจาคส่วนตัวของฉัน Bitcoin URI: bitcoin: 1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH? amount = 0.5 & label = Agile% 20Stack โปรดสังเกตว่าโครงร่างนั้นเป็น URN ที่มีพารามิเตอร์เคียวรี แต่ส่งไปที่ตัวจัดการโปรโตคอล URI ประเภทนี้อาจได้รับประโยชน์จากวิธีแก้ปัญหา "utf8 = ✓" เช่นกัน
Gary Rowe

1
@GaryRowe คุณเคยได้รับเงินบริจาคจากลิงก์นั้นหรือไม่?
Kyralessa

คำตอบ:


814

ตามค่าเริ่มต้น IE รุ่นเก่ากว่า (<= 8) จะส่งข้อมูลแบบฟอร์มในการเข้ารหัสแบบละติน -1 หากเป็นไปได้ โดยการรวมอักขระที่ไม่สามารถแสดงเป็นภาษาละติน -1 ทำให้ IE ถูกบังคับให้ใช้การเข้ารหัส UTF-8 สำหรับการส่งแบบฟอร์มซึ่งจะทำให้กระบวนการแบ็กเอนด์ต่าง ๆ ง่ายขึ้นตัวอย่างเช่นการคงอยู่ของฐานข้อมูล

หากพารามิเตอร์เป็นutf8=trueเช่นนี้จะไม่ทำให้เกิดการเข้ารหัส UTF-8 ในเบราว์เซอร์เหล่านี้


8
@LarsViklund ฉันควรชัดเจนกับความคิดเห็นของฉัน ฉันหมายถึงว่าการตรวจสอบความถูกต้องที่เกี่ยวข้องกับการเข้ารหัสอักขระนั้นง่ายขึ้นไม่ผ่านเลย
Gary Rowe

3
@ แก้ไขถูกต้องมันไม่ได้ช่วยให้คุณไม่ต้องตรวจสอบอินพุตของคุณ แต่หมายความว่าการปรับแต่งการเข้ารหัสเป็นเพียงส่วนหนึ่งของการจัดการความปลอดภัยของคุณและไม่ทำให้แนวคิดของเส้นทาง "การประมวลผลมาตรฐาน" ของคุณเสียไป
กาเร็ ธ

36
ดูstackoverflow.com/questions/3222013/ด้วย เห็นได้ชัดว่า Ruby on Rails เคยใช้ตัวละครหิมะและเปลี่ยนเป็นเครื่องหมายถูกซึ่งไม่ชัดเจน แต่ตลกน้อยกว่า
Jack V.

11
@JohnLBevan ถูกเพิกเฉยในตอนท้ายของการรับมันทำหน้าที่บังคับเบราว์เซอร์ให้ส่งสิ่งต่าง ๆ ใน utf8 แทนที่จะเป็น latin1 ฉันเคยเห็นว่ามันเป็น = = 💩 (นั่นคือจุดรหัส 'กองของปู' ดูเหมือนว่ามันไม่ได้แสดงความคิดเห็นใน)
cabbey

3
@ กาเร็ ธ : คุณสามารถสำรองข้อความที่ IE <= 8 แบบฟอร์มไม่สนับสนุนเอกสารและ / หรือการเข้ารหัสแบบฟอร์มได้หรือไม่?
hakre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.