Swift Academy · บทเรียน

มุมมองการเข้ารหัส: utf8, utf16, unicodeScalars

ทำงานกับรูปแบบการเข้ารหัสที่แตกต่างกัน

บทเรียน 4 จาก 413 ขั้นตอน

มุมมองการเข้ารหัส: utf8, utf16, unicodeScalars เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

มุมมองการเข้ารหัสสตริง

String ของ Swift มีมุมมองหลายแบบสำหรับข้อความเดียวกันในระดับต่าง ๆ ได้แก่ utf8, utf16 และ unicodeScalars

let s = "Hi"
print(Array(s.utf8))
print(Array(s.utf16))

มุมมอง utf8

มุมมอง .utf8 จะแสดงสตริงเป็นลำดับของหน่วยรหัส UTF-8 หรือไบต์ อักขระ ASCII แต่ละตัวใช้หนึ่งไบต์

let s = "AB"
for byte in s.utf8 {
    print(byte)
}

UTF-8 หลายไบต์

อักขระที่ไม่ใช่ ASCII ใช้ไบต์ UTF-8 หลายไบต์ ตัวอักษรที่มีเครื่องหมายกำกับหรือ emoji จะขยายเป็นหน่วยรหัสหลายหน่วย

let s = "\u{e9}"
print("UTF-8 bytes:", Array(s.utf8))

มุมมอง utf16

มุมมอง .utf16 จะแสดงหน่วยรหัส UTF-16 อักขระทั่วไปส่วนใหญ่ใช้หนึ่งหน่วย ส่วนอักขระที่อยู่นอกระนาบพื้นฐานใช้สองหน่วย หรือคู่ตัวแทน

let s = "A\u{1F600}"
print("UTF-16 units:", Array(s.utf16))

มุมมอง unicodeScalars

มุมมอง .unicodeScalars จะแสดงจุดรหัสพื้นฐาน ซึ่งอยู่ระหว่างอักขระกับไบต์ดิบ

let s = "Hi\u{1F600}"
for scalar in s.unicodeScalars {
    print(scalar.value)
}

การเปรียบเทียบมุมมอง

สตริงเดียวกันให้จำนวนที่แตกต่างกันในแต่ละมุมมอง เนื่องจากการเข้ารหัสแทนอักขระด้วยจำนวนหน่วยที่ไม่เท่ากัน

let s = "\u{1F600}"
print("characters:", s.count)
print("scalars:", s.unicodeScalars.count)
print("utf16:", s.utf16.count)
print("utf8:", s.utf8.count)

เหตุใดจึงใช้ UTF-8

UTF-8 เป็นการเข้ารหัสหลักที่ใช้กับไฟล์และเครือข่าย มุมมอง .utf8 ช่วยให้คุณสร้างไบต์เหล่านั้นได้โดยตรง

let message = "OK"
let bytes = Array(message.utf8)
print(bytes)

เหตุใดจึงใช้ UTF-16

UTF-16 ถูกใช้โดยแพลตฟอร์มและส่วนติดต่อโปรแกรมบางประเภท มุมมอง .utf16 ช่วยให้ทำงานร่วมกับสิ่งเหล่านั้นได้

let s = "Hi"
print("UTF-16 count:", s.utf16.count)

การสร้างสตริงขึ้นใหม่

คุณสามารถสร้างสตริงขึ้นใหม่จากไบต์ UTF-8 โดยใช้ String(decoding:as:) ทำให้การแปลงไปและกลับเสร็จสมบูรณ์

let bytes: [UInt8] = Array("Swift".utf8)
let restored = String(decoding: bytes, as: UTF8.self)
print(restored)

การนับไบต์เทียบกับอักขระ

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

let s = "caf\u{e9}"
print("Characters:", s.count)
print("UTF-8 bytes:", s.utf8.count)

การเลือกมุมมองที่เหมาะสม

ใช้อักขระสำหรับตรรกะการแสดงผล ใช้สเกลาร์สำหรับการวิเคราะห์ Unicode และใช้ utf8 หรือ utf16 สำหรับการเข้ารหัส การจัดเก็บ และการทำงานร่วมกับระบบอื่น

let s = "A\u{e9}\u{1F600}"
print("chars:", s.count, "scalars:", s.unicodeScalars.count, "utf8:", s.utf8.count)

ตรวจสอบความเข้าใจ

ทบทวนว่ามุมมอง utf8 มีอะไรอยู่ภายใน

สรุป: มุมมองการเข้ารหัส

คุณได้เรียนรู้ว่า String มีมุมมอง utf8, utf16 และ unicodeScalars สำหรับข้อความเดียวกัน ว่าจำนวนของแต่ละมุมมองแตกต่างกันเพราะการเข้ารหัสใช้ขนาดหน่วยไม่เท่ากัน และควรเลือกมุมมองตามว่าต้องการใช้เพื่อการแสดงผล การวิเคราะห์ หรือการเข้ารหัสสำหรับการจัดเก็บและเครือข่าย

let s = "Hi\u{1F600}"
print("chars:", s.count, "utf8:", s.utf8.count, "utf16:", s.utf16.count)
เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

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

บทเรียน “มุมมองการเข้ารหัส: utf8, utf16, unicodeScalars” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “มุมมองการเข้ารหัส: utf8, utf16, unicodeScalars” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “มุมมองการเข้ารหัส: utf8, utf16, unicodeScalars”

ทำงานกับรูปแบบการเข้ารหัสที่แตกต่างกัน คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “มุมมองการเข้ารหัส: utf8, utf16, unicodeScalars” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. อักขระและกลุ่มกราฟีม
  2. Unicode Scalars และจุดรหัส
  3. การนับและวนซ้ำอักขระ
  4. มุมมองการเข้ารหัส: utf8, utf16, unicodeScalars
← กลับไปที่ Swift Academy