Go Academy · Pelajaran

Unicode dan utf8

Tangani teks multibyte

Pelajaran 4 dari 413 langkah

Unicode dan utf8 adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Mengapa Unicode Penting

Teks modern memuat aksen, emoji, dan aksara non-Latin. Unicode memberi setiap karakter sebuah angka yang disebut titik kode.

Go menyimpan string sebagai UTF-8, yaitu pengodean dengan lebar variabel untuk titik-titik kode tersebut.

package main

import "fmt"

func main() {
    s := "héllo 世界"
    fmt.Println(s)
}

Jumlah Bita per Karakter Berbeda

Dalam UTF-8, sebuah karakter menggunakan 1 hingga 4 bita:

  • Huruf ASCII: 1 bita.
  • Huruf Latin beraksen: biasanya 2 bita.
  • Karakter CJK: biasanya 3 bita.
package main

import "fmt"

func main() {
    fmt.Println(len("a"))
    fmt.Println(len("é"))
    fmt.Println(len("世"))
}

Paket unicode/utf8

Paket unicode/utf8 memahami pengodean tersebut. utf8.RuneCountInString(s) menghitung karakter dengan benar, tidak seperti len.

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "héllo"
    fmt.Println(len(s))
    fmt.Println(utf8.RuneCountInString(s))
}

Memvalidasi UTF-8

Gunakan utf8.ValidString(s) untuk memastikan sebuah teks berisi UTF-8 yang terbentuk dengan benar sebelum memprosesnya.

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    fmt.Println(utf8.ValidString("héllo"))
    fmt.Println(utf8.ValidString(string([]byte{0xff, 0xfe})))
}

Mendekode Satu Karakter

utf8.DecodeRuneInString(s) mengembalikan karakter pertama dan jumlah bita yang digunakannya. Dengan demikian, Anda dapat menelusuri teks secara manual.

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    r, size := utf8.DecodeRuneInString("世界")
    fmt.Println(string(r), size)
}

Range Mendekode Secara Otomatis

Perulangan for range sudah melakukan pendekodean UTF-8. Indeksnya melompat sesuai ukuran bita karakter pada setiap langkah.

package main

import "fmt"

func main() {
    for i, r := range "a世b" {
        fmt.Println(i, string(r))
    }
}

Paket unicode

Paket unicode mengklasifikasikan karakter tunggal. Fungsi seperti unicode.IsLetter dan unicode.IsDigit menjawab pertanyaan tentang sebuah karakter.

package main

import (
    "fmt"
    "unicode"
)

func main() {
    fmt.Println(unicode.IsLetter('A'))
    fmt.Println(unicode.IsDigit('7'))
    fmt.Println(unicode.IsSpace(' '))
}

Mengubah Huruf Berdasarkan Karakter

unicode.ToUpper dan unicode.ToLower bekerja pada setiap karakter, termasuk banyak huruf non-ASCII.

package main

import (
    "fmt"
    "unicode"
)

func main() {
    fmt.Println(string(unicode.ToUpper('a')))
    fmt.Println(string(unicode.ToLower('Z')))
}

Menghitung Huruf dengan Aman

Gabungkan kedua paket tersebut untuk menghitung hanya huruf dalam teks campuran dengan menangani setiap karakter secara tepat.

package main

import (
    "fmt"
    "unicode"
)

func main() {
    count := 0
    for _, r := range "a1 b2 世!" {
        if unicode.IsLetter(r) {
            count++
        }
    }
    fmt.Println(count)
}

Membalik Berdasarkan Karakter

Untuk membalik teks dengan aman, Anda harus membalik karakter, bukan bita, agar karakter multibita tidak terpecah.

package main

import "fmt"

func main() {
    runes := []rune("a世b")
    for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
        runes[i], runes[j] = runes[j], runes[i]
    }
    fmt.Println(string(runes))
}

Menyatukan Semuanya

Alat ringkasan singkat: laporkan panjang dalam bita, jumlah karakter, dan apakah teks tersebut merupakan UTF-8 yang valid.

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "Go 世界!"
    fmt.Println("bytes:", len(s))
    fmt.Println("runes:", utf8.RuneCountInString(s))
    fmt.Println("valid:", utf8.ValidString(s))
}

Pemeriksaan Singkat

Pilih cara yang benar untuk menghitung karakter.

Ringkasan: Unicode dan utf8

Sekarang Anda dapat menangani teks multibita dengan percaya diri:

  • Teks Go menggunakan UTF-8; karakter membutuhkan 1 hingga 4 bita.
  • unicode/utf8 menghitung, memvalidasi, dan mendekode karakter.
  • unicode mengklasifikasikan dan mengubah besar-kecil huruf pada karakter tunggal.
package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "café 語"
    fmt.Println(utf8.RuneCountInString(s), "runes")
}
Gratis untuk memulai

Belajar Go dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Unicode dan utf8” gratis?

Ya — teks lengkap “Unicode dan utf8” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Unicode dan utf8”?

Tangani teks multibyte Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Unicode dan utf8” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Rune vs Byte
  2. Fungsi Paket strings
  3. strings.Builder
  4. Unicode dan utf8
← Kembali ke Go Academy