Cara melaksanakan pengekodan URL dalam golang

PHPz
Lepaskan: 2023-04-24 16:56:59
asal
2564 orang telah melayarinya

Dalam beberapa tahun kebelakangan ini, dengan perkembangan teknologi Internet, semakin ramai pembangun program telah mula menggunakan bahasa Go untuk pembangunan. Bahasa Go ialah bahasa pengaturcaraan yang cekap, pantas dan selamat, dan ia juga menyokong pengekodan URL. Walau bagaimanapun, jika anda ingin melaksanakan pengekodan URL sendiri dalam Go, kandungan berikut akan membantu anda.

Pengekodan URL ialah cara menukar aksara khas kepada sesuatu yang boleh diterima dan dihantar melalui URL. Untuk aksara bukan ASCII seperti ruang dan aksara Cina, ia tidak dibenarkan dalam alamat URL, jadi kami perlu mengekodnya. Dalam bahasa Go, anda boleh menggunakan pakej "net/url" untuk melaksanakan pengekodan dan penyahkodan URL. Berikut ialah contoh kod:

package main

import (
    "fmt"
    "net/url"
)

func main() {
    originalString := "https://www.example.com/path?foo=bar&baz=qux#anchor"
    encodedString := url.QueryEscape(originalString)
    decodedString, err := url.QueryUnescape(encodedString)

    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Original string:", originalString)
    fmt.Println("Encoded string:", encodedString)
    fmt.Println("Decoded string:", decodedString)
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mentakrifkan rentetan alamat URL originalString yang perlu dikodkan, dan kemudian panggil fungsi "url.QueryEscape" untuk mengekodnya. Seterusnya, kami menyahkod rentetan yang dikodkan menggunakan fungsi "url.QueryUnescape" dan menyimpan hasilnya dalam pembolehubah decodedString.

Hasil keluaran kod di atas adalah seperti berikut:

Original string: https://www.example.com/path?foo=bar&baz=qux#anchor
Encoded string: https%3A%2F%2Fwww.example.com%2Fpath%3Ffoo%3Dbar%26baz%3Dqux%23anchor
Decoded string: https://www.example.com/path?foo=bar&baz=qux#anchor
Salin selepas log masuk

Seperti yang dapat dilihat daripada hasil keluaran di atas, selepas pengekodan melalui fungsi "url.QueryEscape", rentetan asal ditukar kepada rentetan yang dikodkan, semua aksara bukan ASCII dilepaskan ke dalam bentuk "%XX". Sebaliknya, selepas menyahkod melalui fungsi "url.QueryUnescape", rentetan yang dikodkan dipulihkan kepada rentetan asal.

Selain menggunakan pakej "net/url", kami juga boleh melaksanakan pengekodan URL secara manual. Berikut ialah contoh pelaksanaan pengekodan URL secara manual:

package main

import (
    "fmt"
    "strings"
)

var encodeMap = map[byte]string{
    '!':  "%21",
    '#':  "%23",
    '$':  "%24",
    '&':  "%26",
    '\'': "%27",
    '(':  "%28",
    ')':  "%29",
    '*':  "%2A",
    '+':  "%2B",
    ',':  "%2C",
    '/':  "%2F",
    ':':  "%3A",
    ';':  "%3B",
    '=':  "%3D",
    '?':  "%3F",
    '@':  "%40",
    '[':  "%5B",
    ']':  "%5D",
}

func encode(s string) string {
    var b strings.Builder
    for i := 0; i < len(s); i++ {
        ch := s[i]
        if val, ok := encodeMap[ch]; ok {
            b.WriteString(val)
        } else {
            b.WriteByte(ch)
        }
    }
    return b.String()
}

func main() {
    originalString := "https://www.example.com/path?foo=bar&baz=qux#anchor"
    encodedString := encode(originalString)
    fmt.Println(encodedString)
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menentukan pembolehubah "encodeMap", yang mengandungi aksara khas yang perlu dilepaskan dan rentetan aksara melarikan diri yang sepadan . Kemudian, kami mentakrifkan fungsi "pengekodan" untuk melaksanakan pengekodan URL. Dalam fungsi, kami melintasi rentetan yang perlu dikodkan dan menentukan sama ada setiap aksara berada dalam "encodeMap".

Melalui dua kaedah di atas, kami boleh melaksanakan pengekodan dan penyahkodan URL dalam bahasa Go. Khususnya, kami boleh menggunakan pakej "net/url" untuk melaksanakan kod yang lebih pendek dan peraturan pengekodan URL yang lebih komprehensif, manakala pelaksanaan manual agak mudah dan mudah difahami serta sesuai untuk keperluan pengekodan berskala kecil. Dalam aplikasi praktikal, kaedah pengekodan yang sesuai boleh dipilih mengikut senario tertentu.

Atas ialah kandungan terperinci Cara melaksanakan pengekodan URL dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!