Unicode dan utf8
Tangani teks multibyte
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/utf8menghitung, memvalidasi, dan mendekode karakter.unicodemengklasifikasikan dan mengubah besar-kecil huruf pada karakter tunggal.
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
s := "café 語"
fmt.Println(utf8.RuneCountInString(s), "runes")
}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
- Rune vs Byte
- Fungsi Paket strings
- strings.Builder
- Unicode dan utf8