<meta charset =“ utf-8”> vs <meta http-equiv =“ ประเภทเนื้อหา”>


1535

เพื่อที่จะกำหนดชุดอักขระสำหรับHTML5 Doctypeฉันควรใช้สัญลักษณ์ใด

  1. สั้น:

    <meta charset="utf-8" /> 
  2. ยาว:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

94
การใช้แท็ก <meta> สำหรับบางอย่างเช่นประเภทเนื้อหาและการเข้ารหัสเป็นเรื่องที่น่าจับตามองอย่างมากเนื่องจากคุณไม่ทราบสิ่งเหล่านั้นคุณจึงไม่สามารถแยกไฟล์เพื่อรับค่าของเมตาแท็ก
Mark

321
คุณสามารถแยกมันเป็น ASCII จนกว่าจะถึงมัน อัลกอริทึมการแยกวิเคราะห์ HTML5 คำนึงถึงสิ่งนี้
เควนติ

41
ควรสังเกตว่าไม่ใช้สำหรับการวิเคราะห์คำเมื่อมีการแสดงหน้าเว็บ แต่Content-Typeจะใช้ส่วนหัวในการตอบกลับHTTP แทน เมตาแท็กจะใช้เมื่อโหลดเพจจากระบบไฟล์ดิสก์ในระบบเท่านั้น
BalusC

38
องค์ประกอบ meta จะใช้ผ่าน HTTP ภายใต้เงื่อนไขบาง (รวมถึงกรณีที่ไม่มีข้อมูลอยู่ในส่วนหัว HTTP เป็นพิเศษ)
เคว็นติ

78
นอกจากนี้ยังแดกดันว่ามันเป็นชื่อ charset เมื่อมันเป็นจริงสำหรับการระบุการเข้ารหัส (ชุดอักขระเป็น Unicode การเข้ารหัสคือ UTF-8)
Ryan

คำตอบ:


1084

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


23
เบราว์เซอร์รองรับอะไรบ้าง ไม่<meta charset='utf-8'>ทำงานใน IE6?
Šime Vidas

11
เท่าที่ฉันรู้ใช่
เควนติ

4
นี่คือลิงก์ที่อัปเดตสำหรับหน้ารหัส Googleที่ @ Šime Vidas พูดถึง มันบอกว่าเกี่ยวกับ IE 6, 7 และ 8, "ในเบราว์เซอร์ที่ไม่ใช่ IE คุณสามารถใช้ document.characterSet ได้ใน IE คุณอาจคิดว่าคุณสามารถ document.getElementsByTagName ('meta') [0] .charset แต่สิ่งนี้ คืนค่าการเข้ารหัสอักขระที่คุณระบุเท่านั้นไม่ใช่การเข้ารหัสที่ IE ใช้จริง "
hotshot309

7
ฉันรู้ว่าเธรดนี้เก่า แต่gtmetrix.com/specify-a-character-set-early.htmlระบุว่าใช้<meta>เพื่อตั้งค่าการเข้ารหัสอักขระปิดใช้งานการดาวน์โหลด lookahead ใน IE8 ซึ่งอาจส่งผลต่อเวลาในการโหลดหน้าเว็บของคุณ ใช่รู้ฉันรู้ ... ลดลง IE8 @ MészárosLajosสามารถกลับมาที่นี่ได้ในอีกไม่กี่ปีข้างหน้าและจับลูกบอลของเราที่ยังคงรองรับ IE8 ;-)
erturne

3
วันนี้ฉันมีปัญหาที่สัญลักษณ์เกาหลีไม่ปรากฏใน IE11 การปล่อยซินแทกซ์สั้น ๆ เพื่อให้สอดคล้องกับไวยากรณ์ที่ยาวขึ้นช่วยแก้ไขปัญหาได้ ฉันไม่ทราบว่าเกิดจากการกำหนดค่าเซิร์ฟเวอร์บางประเภทหรือว่าเป็นปัญหากับ IE11 และชุดอักขระ การรวมสัญลักษณ์ที่แน่นอนที่มันล้มเหลวคือ베라
James Donnelly

250

การประกาศmeta charsetทั้งสองรูปแบบมีความเท่าเทียมกันและควรทำงานในเบราว์เซอร์เดียวกัน แต่มีบางสิ่งที่คุณต้องจำไว้เมื่อประกาศตัวละครไฟล์เว็บของคุณตั้งค่าเป็น UTF-8:

  1. บันทึกไฟล์ของคุณ (s) ในเข้ารหัส UTF-8 โดยไม่ต้องเครื่องหมายสั่งไบต์ (BOM)
  2. ประกาศการเข้ารหัสในไฟล์ HTML ของคุณโดยใช้meta charset (เช่นด้านบน)
  3. เว็บเซิร์ฟเวอร์ของคุณต้องแสดงไฟล์ของคุณโดยประกาศการเข้ารหัส UTF-8 ในส่วนหัว HTTP ของ Content-Type HTTP

เซิร์ฟเวอร์ Apache ได้รับการกำหนดค่าให้บริการไฟล์ใน ISO-8859-1 ตามค่าเริ่มต้นดังนั้นคุณต้องเพิ่มบรรทัดต่อไปนี้ใน.htaccessไฟล์ของคุณ:

AddDefaultCharset UTF-8

สิ่งนี้จะกำหนดค่า Apache ให้บริการไฟล์ของคุณโดยประกาศการเข้ารหัส UTF-8 ในส่วนหัวการตอบกลับเนื้อหาประเภท แต่ไฟล์ของคุณจะต้องบันทึกใน UTF-8 (โดยไม่ต้อง BOM) เพื่อเริ่มต้นด้วย

Notepad ไม่สามารถบันทึกไฟล์ของคุณใน UTF-8 หากไม่มี BOM แก้ไขฟรีที่สามารถเป็นNotepad ++ บนแถบเมนูโปรแกรมเลือก "การเข้ารหัส> เข้ารหัสเป็น UTF-8 โดยไม่มี BOM" คุณยังสามารถเปิดไฟล์และบันทึกไฟล์เหล่านั้นอีกครั้งใน UTF-8 โดยใช้ "การเข้ารหัส> แปลงเป็น UTF-8 โดยไม่ใช้ BOM"

เพิ่มเติมเกี่ยวกับByte สั่งซื้อมาร์ค (BOM) ที่วิกิพีเดีย


20
@CodeBoy ฉันจะแก้ไขคำตอบของคุณเพื่อพูดว่า "คุณควรบันทึก ... โดยไม่ต้อง BOM" หน้าต่อไปนี้กล่าวว่า "... โดยปกติแล้วจะเป็นการดีที่สุดสำหรับการใช้งานร่วมกันเพื่อละเว้น BOM ... " ซึ่งระบุแนวปฏิบัติที่ดีที่สุด แต่ไม่ใช่ข้อกำหนด: w3.org/International/questions/qa-byte-order-mark
Johann

3
ใน IIS คุณสามารถตั้งค่าชุดอักขระในส่วนหัว HTTP ด้วย <globalization fileEncoding = "utf-8" responseEncoding = "utf-8" /> ใน Web.Config - เพิ่มลงใน <system.web>
Chris Moschini

3
ตามที่ฉันเข้าใจสิ่งต่าง ๆ มันไม่สำคัญเลยถ้าคุณช่วยด้วย BOM ของเรา
เดวิด天宇วงศ์

3
ทำไมคุณถึงบอกว่า UTF-8 HTML ควรเป็นแบบไม่มี BOM การมี BOM ควรทำงานได้ดี นอกจากนี้คุณไม่ต้องการmetaและส่วนหัว HTTP คุณต้องการเพียงหนึ่งใน BOM metaหรือส่วนหัว HTTP
hsivonen

5
Summing up: don't use BOM for UTF-8ฉันไม่เห็นด้วยกับสิ่งนี้ BOM ใน UTF-8 มีประโยชน์มากสำหรับการส่งสัญญาณประเภทการเข้ารหัส ไม่เช่นนั้นเราต้องเดาหรือใช้สิ่งต่าง ๆ เช่นเมตาแท็กที่คำถามนี้อ้างถึง สิ่งที่ยอดเยี่ยมเกี่ยวกับ BOM คือมันเป็นส่วนหนึ่งของข้อมูลจำเพาะของ Unicode และสามารถใช้กับข้อมูลทั้งหมดที่เข้ารหัสใน Unicode ไม่ใช่แค่ HTML สิ่งที่เราควรทำคือใช้ BOM ทุกหนทุกแห่งปล่อยให้ซอฟต์แวร์ดั้งเดิมระเบิดขึ้นรายงานข้อบกพร่องเหล่านั้นและแก้ไขให้ถูกต้อง
Stijn de Witt

82

อีกเหตุผลที่จะไปกับสั้น ๆ ก็คือมันตรงกับกรณีอื่น ๆ ที่คุณอาจระบุชุดอักขระในมาร์กอัป ตัวอย่างเช่น:

<script type="javascript" charset="UTF-8" src="/script.js"></script>

<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>

ความสอดคล้องช่วยลดข้อผิดพลาดและทำให้โค้ดอ่านง่ายขึ้น

โปรดทราบว่าแอตทริบิวต์ชุดอักขระจะไม่ตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก คุณสามารถใช้ UTF-8 หรือ utf-8 ได้ แต่ UTF-8 นั้นชัดเจนขึ้นอ่านได้มากขึ้นและแม่นยำยิ่งขึ้น

นอกจากนี้ยังไม่มีเหตุผลที่จะใช้ค่าใด ๆ นอกเหนือจาก UTF-8 ในแอตทริบิวต์ meta charset หรือส่วนหัวของหน้า UTF-8 เป็นการเข้ารหัสเริ่มต้นสำหรับเอกสารบนเว็บตั้งแต่ HTML4 ในปี 1999 และเป็นวิธีเดียวที่ใช้ในการสร้างเว็บเพจที่ทันสมัย

นอกจากนี้คุณไม่ควรใช้เอนทิตี HTML ใน UTF-8 ควรพิมพ์อักขระเช่นสัญลักษณ์ลิขสิทธิ์โดยตรง เอนทิตีเดียวที่คุณควรใช้มีไว้สำหรับอักขระมาร์กอัปที่สงวนไว้ 5 ตัว: น้อยกว่า, มากกว่า, แอมเปอร์แซนด์, ไพร์ม, ดับเบิลไพร์ม องค์กรต้องการตัวแยกวิเคราะห์ HTML ซึ่งคุณอาจไม่ต้องการใช้ในอนาคตพวกเขาแนะนำข้อผิดพลาดทำให้รหัสของคุณอ่านง่ายขึ้นเพิ่มขนาดไฟล์ของคุณและบางครั้งถอดรหัสไม่ถูกต้องในเบราว์เซอร์ต่างๆขึ้นอยู่กับเอนทิตีที่คุณใช้ เรียนรู้วิธีพิมพ์ / ใส่ลิขสิทธิ์เครื่องหมายการค้าเครื่องหมายคำพูดเปิดปิดเครื่องหมายอัญประกาศเครื่องหมายขีดกลางขีดกลางกระสุนยูโรและอักขระอื่น ๆ ที่คุณพบในเนื้อหาของคุณและใช้อักขระจริงเหล่านั้นในรหัสของคุณ Mac มีตัวแสดงตัวละครที่คุณสามารถเปิดได้ในการตั้งค่าระบบคีย์บอร์ด และคุณสามารถค้นหาแล้วลากและวางอักขระที่คุณต้องการหรือใช้ Keyboard Viewer ที่ตรงกันเพื่อดูว่าจะพิมพ์คีย์ใด ตัวอย่างเช่นเครื่องหมายการค้าคือตัวเลือก + 2 UTF-8 มีอักขระและสัญลักษณ์ทั้งหมดจากภาษามนุษย์ทุกภาษาที่เขียน ดังนั้นจึงไม่มีข้อแก้ตัวสำหรับการใช้งาน - แทน em dash มันไม่ใช่ความคิดที่ดีที่จะเรียนรู้กฎของการใช้เครื่องหมายวรรคตอนและการพิมพ์เช่น ... โดยรู้ว่าช่วงเวลานั้นอยู่ในเครื่องหมายคำพูดที่ใกล้ชิดไม่ใช่ด้านนอก

การใช้แท็กสำหรับบางอย่างเช่นประเภทเนื้อหาและการเข้ารหัสเป็นเรื่องน่าขันอย่างยิ่งเนื่องจากคุณไม่ทราบสิ่งเหล่านั้นคุณจึงไม่สามารถแยกไฟล์เพื่อรับค่าเมตาแท็ก

ไม่นั่นไม่ใช่ความจริง เบราว์เซอร์เริ่มต้นในการแยกวิเคราะห์ไฟล์เป็นการเข้ารหัสเริ่มต้นของเบราว์เซอร์ UTF-8 หรือ ISO-8859-1 เนื่องจาก US-ASCII เป็นเซตย่อยของทั้ง ISO-8859-1 และ UTF-8 เบราว์เซอร์จึงสามารถอ่านได้อย่างดีทั้งสองวิธี ... มันเหมือนกัน เมื่อเบราว์เซอร์พบแท็ก meta charset หากการเข้ารหัสแตกต่างจากที่เบราว์เซอร์ใช้อยู่เบราว์เซอร์จะโหลดหน้าเว็บในการเข้ารหัสที่ระบุ นั่นคือเหตุผลที่เราใส่เมตาแท็กชาร์เซ็ตที่ด้านบนขวาหลังจากแท็กหัวก่อนหน้าสิ่งอื่นแม้แต่ชื่อ ด้วยวิธีนี้คุณสามารถใช้อักขระ UTF-8 ในชื่อของคุณ

คุณต้องบันทึกไฟล์ของคุณในการเข้ารหัส UTF-8 โดยไม่มี BOM

นั่นไม่เป็นความจริงอย่างเคร่งครัด หากคุณมีเพียง US-ASCII ตัวอักษรในเอกสารของคุณคุณสามารถบันทึกเป็น US-ASCII และใช้เป็น UTF-8 เนื่องจากเป็นชุดย่อย แต่ถ้ามีอักขระ Unicode คุณถูกต้องคุณต้องบันทึกเป็น UTF-8 โดยไม่มี BOM

หากคุณต้องการโปรแกรมแก้ไขข้อความที่ดีที่จะบันทึกไฟล์ของคุณใน UTF-8 ฉันแนะนำ Notepad ++

สำหรับ Mac ให้ใช้ Bare Bones TextWrangler (ฟรี) จาก Mac App Store หรือ Bare Bones BBEdit ซึ่งอยู่ที่ Mac App Store ในราคา $ 39.99 ... ราคาถูกมากสำหรับเครื่องมือที่ยอดเยี่ยม ในทั้งสองแอพมีเมนูที่ด้านล่างของหน้าต่างเอกสารที่คุณระบุการเข้ารหัสเอกสารและคุณสามารถเลือก "UTF-8 no BOM" ได้อย่างง่ายดาย และแน่นอนคุณสามารถตั้งค่าให้เป็นค่าเริ่มต้นสำหรับเอกสารใหม่ในการตั้งค่า

แต่ถ้าเว็บเซิร์ฟเวอร์ของคุณทำหน้าที่เข้ารหัสในส่วนหัว HTTP ซึ่งขอแนะนำทั้ง [เมตาแท็ก] นั้นไม่มีความจำเป็น

มันไม่ถูกต้อง แน่นอนคุณควรตั้งค่าการเข้ารหัสในส่วนหัว HTTP แต่คุณควรตั้งค่าไว้ในแอตทริบิวต์ meta charset เพื่อให้ผู้ใช้สามารถบันทึกหน้าเว็บได้โดยไม่ต้องออกจากเบราว์เซอร์ไปยังที่จัดเก็บในตัวเครื่องแล้วเปิดอีกครั้งในภายหลัง สิ่งบ่งชี้เพียงอย่างเดียวของการเข้ารหัสที่จะมีอยู่คือแอตทริบิวต์ meta charset คุณควรตั้งค่าแท็กฐานด้วยเหตุผลเดียวกัน ... บนเซิร์ฟเวอร์แท็กฐานไม่จำเป็น แต่เมื่อเปิดจากที่จัดเก็บในตัวแท็กฐานจะช่วยให้หน้าเว็บทำงานได้ราวกับว่าอยู่บนเซิร์ฟเวอร์ สินทรัพย์ในสถานที่และอื่น ๆ ไม่มีลิงก์ที่ใช้งานไม่ได้

AddDefaultCharset UTF-8

หรือคุณสามารถเปลี่ยนการเข้ารหัสไฟล์บางประเภทเช่น:

AddType text/html;charset=utf-8 html

เคล็ดลับสำหรับการให้บริการทั้งไฟล์ UTF-8 และ Latin-1 (ISO-8859-1) คือการให้ไฟล์ UTF-8 เป็นนามสกุล "text" และไฟล์ละติน -1 "txt"

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

สุดท้ายให้พิจารณาการบันทึกเอกสารของคุณด้วยการสิ้นสุดบรรทัด Unix ไม่ใช่ DOS ดั้งเดิม (หรือคลาสสิค) การสิ้นสุดบรรทัด Mac ซึ่งไม่ได้ช่วยและอาจเจ็บโดยเฉพาะอย่างยิ่งเมื่อเราได้รับมากขึ้นจากระบบเดิมเหล่านั้น เอกสาร HTML ที่มีการเข้ารหัส HTML5, UTF-8 ที่ถูกต้องและการสิ้นสุดบรรทัด Unix เป็นงานที่ทำได้ดี คุณสามารถแบ่งปันและแก้ไขและจัดเก็บและอ่านและกู้คืนและพึ่งพาเอกสารนั้นในบริบทจำนวนมาก มันเป็นภาษากลาง มันเป็นกระดาษดิจิตอล


20
"หากคุณมีอักขระ ISO-8859-1 เพียงอย่างเดียวในเอกสารของคุณคุณสามารถบันทึกเป็น ISO-8859-1 และใช้เป็น UTF-8 เพราะเป็นชุดย่อย" - ไม่ถูกต้อง มันจะถูกต้องหากคุณเปลี่ยน "ISO-8859-1" เป็น "US-ASCII" US-ASCII เข้ากันได้กับ UTF-8 เพราะมันเป็นชุดย่อย ISO-8859-1 ไม่ใช่ ในการแปลง ISO-8859-1 (มีอักขระที่ไม่ใช่ ASCII) เป็น UTF-8 คุณจะต้องเข้ารหัสอักขระที่ไม่ใช่ ASCII จุดรหัสสำหรับ ISO-8859-1 มีอยู่ใน Unicode แต่ UTF-8 เข้ารหัสจุดนอก US-ASCII แตกต่างจาก ISO-8859-1
thomasrutter

2
ประเด็นของคุณเกี่ยวกับเอนทิตี HTML นั้นดี ในอดีตฉันใช้เอนทิตี้เพื่อค้นหาว่าพวกเขาถูกแปลงเป็นอักขระ UTF-8 หลังจากถูกบันทึกในระบบที่แตกต่างกันและ / หรือเปิดในบรรณาธิการที่แตกต่างกัน อย่างไรก็ตามเป็นเรื่องที่น่าสังเกตว่าช่องว่างที่ไม่ทำลาย (& nbsp;) สามารถสร้างผลลัพธ์ที่สับสนเนื่องจากโดยทั่วไปคุณจะไม่เห็นสิ่งเหล่านี้ในเครื่องมือแก้ไขของคุณดังนั้นโดยปกติแล้วจะเป็นการดีที่สุดที่จะเป็นหน่วยงานเพื่อประโยชน์ของความชัดเจน
squidbe

"You should also set a base tag..."ควรมาพร้อมกับคำเตือนที่อธิบายไว้ที่นี่
Mafuba

อีกเหตุผลที่คุณอาจชอบเอนทิตี HTML คือถ้าคุณใช้บางอย่างเช่นอิออน ฉันอยากเห็น&#xf101;มากกว่าสัญลักษณ์เริ่มต้นหรือตัวละครแปลก ๆ ที่ฉันจำไม่ได้
Daniel Lubarov

30

<meta charset="utf-8"> ถูกนำมาใช้กับ / สำหรับ HTML5

ตามที่ระบุไว้ในเอกสารทั้งคู่มีผลใช้ได้ อย่างไรก็ตาม<meta charset="utf-8">มีไว้สำหรับ HTML5 เท่านั้น (และง่ายต่อการพิมพ์ / จดจำ)

ในเวลาที่กำหนดรูปแบบเก่าจะถูกปฏิเสธในอนาคตอันใกล้ <meta charset="utf-8">ฉันติดไปอยู่ที่ใหม่

มีทางเดียวเท่านั้น แต่ขึ้น ในกรณีของเทคโนโลยีนั่นเป็นการยกเลิกการใช้งานแบบเก่า (เร็วจริงๆจริงๆ)

เอกสารประกอบ: HTML meta charset Attribute — W3Schools


2
เกี่ยวกับลิงค์โปรดดูmeta.stackoverflow.com/questions/280478/why-not-w3schools-com
tripleee

18

ในขณะที่ไม่ตอบคำถามอื่น ๆ ฉันคิดว่าสิ่งเหล่านี้มีค่าควรแก่การกล่าวถึง

  1. เครื่องหมาย“ ยาว” ( http-equiv) และเครื่องหมาย“ สั้น” เท่ากันแล้วแต่ว่าสิ่งใดจะเกิดขึ้นก่อนจะได้รับชัยชนะ
  2. ส่วนหัวของเว็บเซิร์ฟเวอร์จะแทนที่<meta>แท็กทั้งหมด
  3. BOM (เครื่องหมายคำสั่งซื้อแบบไบต์) จะแทนที่ทุกอย่างและในหลายกรณีจะมีผลกับ html 4 (และสิ่งอื่น ๆ เช่นกัน)
  4. หากคุณไม่ได้ประกาศการเข้ารหัสใด ๆ คุณอาจจะได้รับข้อความของคุณใน“ การเข้ารหัสข้อความทางเลือก” ที่กำหนดเบราว์เซอร์ของคุณ ไม่ว่าจะเป็นใน Firefox หรือ Chrome ก็ utf-8;
  5. เบราว์เซอร์จะพยายามอ่านเอกสารของคุณราวกับว่าอยู่ใน ASCII เพื่อรับการเข้ารหัสดังนั้นคุณจึงไม่สามารถใช้การเข้ารหัสแปลก ๆ ได้ (utf-16 กับ BOM ควรจะทำ);
  6. ในขณะที่สเปคบอกว่าการประกาศการเข้ารหัสจะต้องอยู่ในช่วง 512 ไบต์แรกของเอกสารเบราว์เซอร์ส่วนใหญ่จะลองอ่านมากกว่านั้น

คุณสามารถทดสอบโดยการเรียกใช้และชี้เบราว์เซอร์ของคุณได้ที่echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 localhost:4500(แน่นอนคุณจะต้องการเปลี่ยนหรือลบชิ้นส่วนส่วน BOM คือ\xef\xbb\xbfระวังการเข้ารหัสของเชลล์ของคุณ)

โปรดทราบว่ามันสำคัญมากที่คุณต้องประกาศการเข้ารหัสอย่างชัดเจน การให้เบราว์เซอร์เดาว่าอาจนำไปสู่ปัญหาด้านความปลอดภัย


1
จุดที่ดี แต่คุณสามารถดูรายละเอียดเกี่ยวกับปัญหาความปลอดภัยที่คุณอ้างถึง?
Armfoot

1
สัญกรณ์ยาวไม่ควรแทนที่ตัวย่อสั้น - เพียงตัวแรกในเอกสารควรจะชนะ
gsnedders

1
@Armfoot ในอดีตเคยมีปัญหากับUTF-7สิ่งที่ฉันจำได้ การสูดดมบนเว็บโดยทั่วไปก็ไม่ดีเช่นเมื่อคุณอัปโหลดรูปภาพที่ดมกลิ่นเป็นเนื้อหาของสคริปต์
phk

@gsnedders ทดสอบด้วย chrome และ firefox คุณพูดถูก แก้ไขคำตอบตามนั้น Armfoot: มันเป็นอะไรบางอย่างเกี่ยวกับการเข้ารหัส 7 บิตอย่าจำสิ่งที่แน่นอน
กระรอก

1
@CraigMcQueen ค่อนข้างแน่ใจว่าเบราว์เซอร์ทางเลือกยังคงเป็นค่าเริ่มต้น (ในปี 2018) ไปยังยุโรปตะวันตกในยุโรปตะวันตกดังนั้นฉันคิดว่ามันเป็นค่าเริ่มต้นสำหรับการเข้ารหัสแบบ unicode ใด ๆ ที่ได้รับความนิยมในแต่ละภูมิภาค ผู้ใช้สามารถตั้งค่าทางเลือกให้เป็น utf-8 ได้ แต่นี่เป็นการเปิดเผยไซต์ทั้งหมดที่เข้ารหัสหลายพันเว็บไซต์ที่ยังคงใช้เป็นตัวอักษรไบต์สูงสูง ASCII ทั่วทุกมุมดังนั้นมันจึงไม่ใช่เรื่องธรรมดา น่าเสียดายมาก ไม่เห็นว่าสิ่งนี้จะเปลี่ยนแปลงไปอย่างไรโดยไม่ต้องบีบบังคับจากผู้ขายเบราว์เซอร์เพียงเล็กน้อยและพวกเขาก็ไม่อยากทำลายสิ่งที่เป็นมรดก
brennanyoung

13

ใช้<meta charset="utf-8" />สำหรับเว็บเบราว์เซอร์เมื่อใช้ HTML5

ใช้<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />เมื่อใช้ HTML4 หรือ XHTML หรือตัวแยกวิเคราะห์ dom ที่ล้าสมัยเช่นDOMDocumentใน php 5.3


2

มีข่าวบางอย่างจากMozilla Foundationและจุดไซต์

อย่าใช้ค่านี้ ( http-equiv=content-type) ตามที่ล้าสมัย ต้องการcharsetแอตทริบิวต์ในmetaองค์ประกอบ< > ป้อนคำอธิบายรูปภาพที่นี่


โอ้ในที่สุดบางสิ่งบางอย่างที่ผ่านมามากขึ้น
Ayyash

1

หากต้องการฝังลายเซ็นในอีเมลฉันจะใช้เวอร์ชันยาว:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

เหตุผลก็คือมีผู้อ่านอีเมลไม่กี่คนที่ใช้ html5 ดังนั้นจึงควรใช้รูปแบบ html แบบเก่าเสมอ ที่จริงแล้วควรใช้ตารางมากกว่า divs + css ด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.