Rumah >pembangunan bahagian belakang >Golang >golang tertanam kod kacau

golang tertanam kod kacau

王林
王林asal
2023-05-19 11:43:37473semak imbas

Apabila menulis program Golang, anda mungkin perlu membenamkan beberapa aksara bukan ASCII, seperti teks Cina, ungkapan Emoji, dsb. Walau bagaimanapun, kadangkala, aksara terbenam akan kelihatan bercelaru, menjejaskan kesan larian dan kebolehbacaan program. Yang berikut memperkenalkan beberapa punca dan penyelesaian biasa bagi aksara golang yang tertanam.

1. Pengekodan rentetan Golang

Rentetan dalam Golang ialah urutan yang terdiri daripada aksara Unicode Setiap aksara menduduki 1 atau 2 bait, bergantung pada kaedah pengekodannya. Golang menyokong tiga kaedah pengekodan aksara berikut:

  1. Pengekodan UTF-8

UTF-8 ialah pengekodan Unikod panjang boleh ubah, setiap aksara menduduki 1-4 bait, panjang khusus bergantung pada nilai pengekodan Unicode aksara. Dalam Golang, rentetan dikodkan dalam UTF-8 secara lalai. Contohnya:

s := "你好"

Rentetan di atas menggunakan pengekodan UTF-8.

  1. Pengekodan UTF-16

UTF-16 ialah pengekodan Unikod panjang tetap yang menggunakan 2 bait setiap aksara. Di Golang, anda boleh menggunakan jenis rune untuk mewakili aksara yang dikodkan UTF-16. Contohnya:

var r rune = '好'

Kod di atas mewakili pengekodan UTF-16 bagi aksara 'baik', iaitu integer jenis uint16.

  1. Pengekodan UTF-32

UTF-32 ialah pengekodan Unikod panjang tetap yang menggunakan 4 bait setiap aksara. Di Golang, anda boleh menggunakan jenis int32 untuk mewakili aksara yang dikodkan UTF-32. Contohnya:

var c int32 = '?'

Kod di atas mewakili pengekodan UTF-32 bagi ungkapan Emoji ?, iaitu integer jenis uint32.

2. Kaedah membenamkan aksara bukan ASCII

Di Golang, terdapat empat kaedah berikut untuk membenamkan aksara bukan ASCII:

  1. Gunakan aksara secara langsung

Gunakan aksara secara langsung untuk mewakili aksara bukan ASCII dalam rentetan. Contohnya:

s := "你好?"

Kod di atas mengandungi kedua-dua aksara Cina dan ungkapan Emoji.

  1. Watak melarikan diri

Gunakan aksara melarikan diri untuk mewakili aksara bukan ASCII. Contohnya:

s := "你好U0001F60A"

Dalam kod di atas, U diikuti dengan pengekodan UTF-32 bagi aksara, yang mewakili ungkapan Emoji.

  1. Gunakan nilai yang dikodkan Unikod

Gunakan nilai yang dikodkan Unikod untuk mewakili aksara bukan ASCII. Contohnya:

s := "u4f60u597dU0001F60A"

Dalam kod di atas, u diikuti oleh pengekodan UTF-16 aksara dan U diikuti oleh pengekodan UTF-32.

  1. Gunakan pengekodan base64

Pengekodan Base64 bukan aksara ASCII, dan kemudian benamkan rentetan yang dikodkan dalam program. Contohnya:

s := "5L2g5aW98J+YqA=="

Rentetan di atas ialah hasil pengekodan base64 bagi "Hello?"

3. Punca dan penyelesaian untuk aksara bercelaru terbenam Golang

  1. Kaedah pengekodan yang salah digunakan

Jika kaedah pengekodan yang salah digunakan dalam program , akan menyebabkan rentetan mengandungi aksara bercelaru. Contohnya, apabila menggunakan nilai yang dikodkan Unicode, jika kaedah pengekodan yang salah digunakan, aksara yang bercelaru akan muncul. Cara yang betul untuk menggunakannya ialah menggunakan pengekodan aksara yang betul untuk melarikan diri. Contohnya:

s := "u4f60u597dud83dude0a"

Dalam kod di atas, u diikuti dengan pengekodan UTF-16 dan ud83dude0a ialah perwakilan yang betul bagi pengekodan UTF-16 untuk ungkapan Emoji.

  1. Editor menyebabkan aksara bercelaru semasa menyimpan fail

Sesetengah editor akan menukar pengekodan fail semasa menyimpan fail, seperti menukar pengekodan UTF-8 kepada ANSI. Ini akan mengakibatkan rentetan bercelaru dalam program. Oleh itu, anda harus menggunakan editor yang menyokong pengekodan UTF-8 untuk menyimpan fail dan memastikan pengekodan fail selaras dengan pengekodan yang digunakan dalam atur cara.

  1. Ralat tetapan pembolehubah persekitaran sistem

Dalam sesetengah kes, pembolehubah persekitaran sistem mungkin menjejaskan pengekodan rentetan dalam atur cara. Anda perlu menyemak sama ada pembolehubah persekitaran sistem ditetapkan dengan betul kepada kaedah pengekodan.

Ringkasnya, apabila membenamkan aksara bukan ASCII, anda perlu memilih kaedah pengekodan dengan betul dan memastikan kaedah pengekodan fail adalah konsisten dengan kaedah pengekodan dalam program. Gunakan kaedah melarikan diri yang betul untuk mengelakkan aksara yang bercelaru.

Atas ialah kandungan terperinci golang tertanam kod kacau. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah perisian golang?Artikel seterusnya:Apakah perisian golang?