golang mengeluarkan aksara Cina yang kacau
Dalam pembangunan golang, jika pengekodan output tidak ditetapkan, masalah aksara Cina bercelaru mungkin berlaku. Di bawah, saya akan memperkenalkan cara menyelesaikan masalah golang mengeluarkan aksara Cina yang kacau-bilau dari dua aspek: prinsip pengekodan output dan menetapkan pengekodan output.
1. Prinsip pengekodan output
Dalam golang, semua rentetan disimpan dalam pengekodan UTF-8, termasuk aksara Cina. UTF-8 ialah pengekodan Unicode panjang boleh ubah yang boleh mewakili sebarang aksara dalam standard Unicode. Oleh itu, aksara Cina yang kami gunakan dalam program golang sebenarnya disimpan dalam ingatan dalam bentuk pengekodan UTF-8.
Apabila kita perlu mengeluarkan atur cara yang ditulis dalam golang ke terminal, fail, halaman web atau peranti output lain, kita perlu menukar pengekodan UTF-8 kepada pengekodan sasaran. Biasanya, terminal atau peranti output fail akan menggunakan pengekodan tempatan secara lalai untuk teks output. Sebagai contoh, sistem pengendalian Windows menggunakan pengekodan GBK secara lalai, dan sistem pengendalian Linux menggunakan pengekodan UTF-8 secara lalai.
Jika pengekodan UTF-8 program golang tidak ditukar dengan betul semasa output, aksara Cina bercelaru mungkin muncul. Ini kerana pengekodan sasaran tidak dapat mengecam aksara Cina dengan betul dalam pengekodan UTF-8, menyebabkan teks output tidak dipaparkan dengan betul.
Oleh itu, untuk menyelesaikan masalah golang mengeluarkan aksara Cina bercelaru, kita perlu menetapkan pengekodan output untuk membolehkan pengekodan sasaran mengenali aksara Cina yang dikodkan UTF-8 dengan betul.
2. Tetapkan pengekodan output
Dalam golang, kaedah menetapkan pengekodan output berbeza-beza bergantung pada peranti output. Di bawah, kami memperkenalkan cara untuk menetapkan pengekodan output terminal, fail dan halaman web masing-masing.
- Tetapkan pengekodan output terminal
Dalam golang, gunakan kaedah Println bagi pakej fmt untuk mengeluarkan rentetan ke terminal. Jika anda perlu menetapkan pengekodan output terminal, kami boleh menggunakan kaedah Fprintln bagi atribut os.Stdout dan menetapkan parameter pemformatan.
Sebagai contoh, di bawah sistem Windows, tetapkan pengekodan output terminal kepada kod GBK seperti berikut:
package main import ( "fmt" "os" ) func main() { stdout := os.Stdout fmt.Println("Hello 世界!") }
Kemudian, gunakan kaedah Println bagi pakej fmt untuk mengeluarkan rentetan Cina yang dikodkan UTF-8 "Hello Dunia!".
Jalankan kod di atas, output terminal hendaklah:
123 Hello 世界!
- Tetapkan pengekodan output fail
Dalam golang, gunakan kaedah Cipta pakej os Cipta fail dan gunakan kaedah NewWriter bagi pakej bufio untuk mencipta penulis fail buffer untuk menetapkan pengekodan fail output.
Sebagai contoh, di bawah sistem Windows, kod untuk menetapkan pengekodan fail output kepada GBK adalah seperti berikut:
package main import ( "bufio" "os" ) func main() { file, err := os.Create("output.txt") if err != nil { panic(err) } defer file.Close() writer := bufio.NewWriter(file) writer.WriteString("Hello 世界!") writer.Flush() }
Dalam kod di atas, kami mula-mula mencipta fail output output.txt menggunakan Cipta kaedah pakej os dan gunakan pernyataan tangguh untuk menangguhkan penutupan pemegang fail.
Jalankan kod di atas dan lihat kandungan fail output.txt Ia sepatutnya:
123 Hello 世界!
- Tetapkan pengekodan output halaman web
. Dalam golang, gunakan net Antara muka penulis pakej /http melaksanakan kaedah Tulis kelas ResponseWriter untuk mengeluarkan respons HTTP.
Jika anda perlu menetapkan pengekodan output halaman web, kami perlu menetapkan atribut Jenis Kandungan pengepala respons HTTP dahulu, dan kemudian gunakan kaedah Tulis untuk mengeluarkan teks yang dikodkan UTF-8.
Sebagai contoh, di bawah sistem Windows, kod untuk menetapkan pengekodan output halaman web kepada GBK adalah seperti berikut:
package main import ( "io" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=gbk") io.WriteString(w, "<html><head><meta charset='gbk'></head><body>Hello 世界!</body></html>") }) http.ListenAndServe(":8080", nil) }
Dalam kod di atas, kami mula-mula menggunakan kaedah HandleFunc net/ Pakej http untuk mendaftarkan fungsi pemprosesan permintaan HTTP. Apabila mengakses laluan akar, tetapkan atribut Jenis Kandungan pengepala respons HTTP kepada "text/html; charset=gbk", dan kemudian gunakan kaedah WriteString bagi pakej io untuk mengeluarkan teks HTML "< head>
Hello world ", ambil perhatian bahawa terdapatAkhir sekali, kami menggunakan kaedah ListenAndServe pakej http untuk memulakan pelayan HTTP dan mendengar port tempatan 8080.
Jalankan kod di atas dan lawati http://localhost:8080, anda sepatutnya dapat melihat dunia Hello! Teks dipaparkan pada halaman web dan set aksara halaman web ditetapkan kepada GBK. Jika parameter charset ditukar kepada UTF-8, aksara Cina bercelaru akan muncul.
Ringkasan
Untuk mengelakkan masalah program golang mengeluarkan aksara Cina yang kacau, kita perlu menetapkan pengekodan output dengan betul semasa mengeluarkan. Untuk peranti output yang berbeza, kita perlu menggunakan kaedah tetapan yang berbeza. Untuk mengeluarkan dalam terminal, kita perlu menggunakan kaedah Fprintln os.Stdout dan menetapkan parameter pemformatan kepada output dalam fail, kita perlu menggunakan kaedah WriteString bagi penulis fail bufio untuk mengeluarkan dalam a halaman web, kita perlu Tetapkan atribut Jenis Kandungan pengepala respons HTTP dan gunakan kaedah Tulis penulis respons untuk mengeluarkan teks HTML.
Atas ialah kandungan terperinci golang mengeluarkan aksara Cina yang kacau. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Inti pemprosesan audio dan video terletak pada pemahaman proses asas dan kaedah pengoptimuman. 1. Proses asas termasuk pengambilalihan, pengekodan, penghantaran, penyahkodan dan main balik, dan setiap pautan mempunyai kesukaran teknikal; 2. Masalah biasa seperti penyimpangan audio dan video, kelewatan lag, bunyi bunyi, gambar kabur, dan lain -lain boleh diselesaikan melalui pelarasan segerak, pengoptimuman pengekodan, modul pengurangan hingar, pelarasan parameter, dan sebagainya; 3. Adalah disyorkan untuk menggunakan FFMPEG, OpenCV, WebRTC, GSTREAMER dan alat lain untuk mencapai fungsi; 4. Dari segi pengurusan prestasi, kita harus memberi perhatian kepada pecutan perkakasan, penetapan kadar bingkai resolusi yang munasabah, masalah konvensyen dan masalah kebocoran memori. Menguasai perkara utama ini akan membantu meningkatkan kecekapan pembangunan dan pengalaman pengguna.

Cara yang paling berkesan untuk menulis Kubernetesoperator adalah untuk menggunakan Go untuk menggabungkan Kubebuilder dan pengawal-runtime. 1. Memahami corak pengendali: Tentukan sumber tersuai melalui CRD, tulis pengawal untuk mendengar perubahan sumber dan lakukan gelung perdamaian untuk mengekalkan keadaan yang diharapkan. 2. Gunakan Kubebuilder untuk memulakan projek dan membuat API untuk menghasilkan CRD, pengawal dan konfigurasi secara automatik. 3. Tentukan spec dan struktur status CRD dalam API/V1/MYAPP_TYPES.GO, dan menjalankan makeManifests untuk menjana cRDYAML. 4. Daftar masuk dalam pengawal

TooptimizegoapplicationsInteractingWithPostgreSqlormysql, focusonindexing, selectivequeries, connectionhandling, caching, andormefficiency.1) useproperIndexing-identifyfrequeriedcolumns, addIndExessely, andusecompositeindexesformultifulty-columnuerformultiulti

HTTP Log Middleware di GO boleh merakam kaedah permintaan, laluan, IP klien dan memakan masa. 1. Gunakan http.handlerfunc untuk membungkus pemproses, 2. Rekod waktu mula dan masa akhir sebelum dan selepas memanggil next.servehttp, 3. Dapatkan IP pelanggan sebenar melalui r.remoteaddr dan X-forward-for headers, 4. Gunakan log.printf untuk mengeluarkan log permintaan, 5. Kod sampel lengkap telah disahkan untuk dijalankan dan sesuai untuk memulakan projek kecil dan sederhana. Cadangan lanjutan termasuk menangkap kod status, menyokong log JSON dan meminta penjejakan ID.

Panik adalah seperti program "serangan jantung" di Go. Pulih boleh digunakan sebagai "alat pertolongan cemas" untuk mencegah kemalangan, tetapi pulih hanya berkuatkuasa dalam fungsi penangguhan. 1.Recover digunakan untuk mengelakkan kelewatan perkhidmatan, log log, dan kesilapan yang mesra. 2. Ia mesti digunakan bersempena dengan menangguhkan dan hanya berkuatkuasa pada goroutine yang sama. Program ini tidak kembali ke titik panik selepas pemulihan. 3. Adalah disyorkan untuk menggunakannya di peringkat atas atau pintu masuk kritikal, dan tidak menyalahgunakannya, dan memberi keutamaan untuk menggunakan pemprosesan ralat. 4. Corak umum adalah untuk merangkum fungsi Saferun untuk membungkus logik panik yang mungkin. Hanya dengan menguasai senario penggunaannya dan batasan boleh memainkan peranannya dengan betul.

Peruntukan Stack sesuai untuk pembolehubah tempatan kecil dengan kitaran hayat yang jelas, dan diuruskan secara automatik, dengan kelajuan yang cepat tetapi banyak sekatan; Peruntukan timbunan digunakan untuk data dengan kitaran hayat yang panjang atau tidak pasti, dan fleksibel tetapi mempunyai kos prestasi. Pengkompil GO secara automatik menentukan kedudukan peruntukan pembolehubah melalui analisis melarikan diri. Jika pembolehubah boleh melarikan diri dari skop fungsi semasa, ia akan diperuntukkan kepada timbunan. Situasi biasa yang menyebabkan melarikan diri termasuk: mengembalikan penunjuk pembolehubah tempatan, memberikan nilai kepada jenis antara muka, dan lulus dalam goroutine. Hasil analisis melarikan diri dapat dilihat melalui -gcflags = " -m". Apabila menggunakan petunjuk, anda harus memberi perhatian kepada kitaran hidup yang berubah -ubah untuk mengelakkan pelarian yang tidak perlu.

GO Language boleh digunakan untuk pengiraan saintifik dan analisis berangka, tetapi perlu difahami. Kelebihannya terletak pada sokongan dan prestasi konkurensi, yang sesuai untuk algoritma selari seperti penyelesaian yang diedarkan, simulasi Monte Carlo, dan sebagainya; Perpustakaan komuniti seperti gonum dan MAT64 menyediakan fungsi pengiraan numerik asas; Pengaturcaraan hibrid boleh digunakan untuk memanggil C/C dan Python melalui CGO atau antara muka untuk meningkatkan kepraktisan. Batasannya adalah bahawa ekosistem tidak matang seperti python, visualisasi dan alat lanjutan lebih lemah, dan beberapa dokumen perpustakaan tidak lengkap. Adalah disyorkan untuk memilih senario yang sesuai berdasarkan ciri GO dan merujuk kepada contoh kod sumber untuk menggunakannya secara mendalam.

Perpustakaan pemprosesan imej yang biasa termasuk pakej imej perpustakaan standard dan perpustakaan pihak ketiga, seperti pengimejan, bimg, dan imagick. 1. Pakej imej sesuai untuk operasi asas; 2. Pencitraan mempunyai fungsi lengkap dan API mudah, yang sesuai untuk kebanyakan keperluan; 3. BIMG didasarkan pada libvips, mempunyai prestasi yang kuat, yang sesuai untuk imej besar atau kesesuaian yang tinggi; 4. Imagick mengikat Imagemagick, yang berkuasa tetapi mempunyai ketergantungan yang berat. Cepat melaksanakan skala imej dan penanaman. Anda boleh menggunakan perpustakaan pengimejan untuk menyelesaikannya melalui beberapa baris kod dalam saiz semula dan fungsi cropanchor, dan menyokong konfigurasi parameter berganda. Menambah penapis atau nada penyesuaian dapat dicapai melalui fungsi transformasi warna yang disediakan oleh imaginasi, seperti graysc
