Maison >développement back-end >Golang >Comment implémenter le codage d'URL dans Golang

Comment implémenter le codage d'URL dans Golang

PHPz
PHPzoriginal
2023-04-24 15:49:102672parcourir

Ces dernières années, avec le développement de la technologie Internet, de plus en plus de développeurs de programmes ont commencé à utiliser le langage Go pour le développement. Le langage Go est un langage de programmation efficace, rapide et sûr, et il prend également en charge le codage d'URL. Cependant, si vous souhaitez implémenter vous-même le codage d’URL dans Go, le contenu suivant vous sera utile.

L'encodage d'URL est un moyen de convertir des caractères spéciaux en quelque chose qui peut être accepté et transmis par les URL. Pour les caractères non-ASCII tels que les espaces et les caractères chinois, ils ne sont pas autorisés dans les adresses URL, nous devons donc les encoder. En langage Go, vous pouvez utiliser le package "net/url" pour implémenter l'encodage et le décodage d'URL. Voici un exemple de code :

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)
}

Dans le code ci-dessus, nous définissons d'abord une chaîne d'adresse URL originalString qui doit être encodée, puis appelons la fonction "url.QueryEscape" pour l'encoder. Ensuite, nous décodons la chaîne codée à l'aide de la fonction "url.QueryUnescape" et enregistrons le résultat dans la variable decodedString.

Le résultat de sortie du code ci-dessus est le suivant :

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

Comme le montre le résultat de sortie ci-dessus, après encodage via la fonction "url.QueryEscape", la chaîne d'origine est convertie en chaîne codée, et toutes les chaînes non -Les caractères ASCII sont échappés sous la forme "%XX". Au contraire, après décodage via la fonction "url.QueryUnescape", la chaîne encodée est restaurée à la chaîne d'origine.

En plus d'utiliser le package "net/url", nous pouvons également implémenter l'encodage d'URL manuellement. Voici un exemple d'implémentation manuelle du codage d'URL :

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)
}

Dans le code ci-dessus, nous définissons d'abord une variable "encodeMap", qui contient les caractères spéciaux qui doivent être échappés et les chaînes d'échappement correspondantes. Ensuite, nous définissons une fonction "encode" pour effectuer l'encodage des URL. Dans la fonction, nous parcourons la chaîne qui doit être codée et déterminons si chaque caractère est dans le "encodeMap". Si elle existe, utilisez la chaîne d'échappement correspondante pour la remplacer ; sinon, affichez-la telle quelle.

Grâce aux deux méthodes ci-dessus, nous pouvons implémenter l'encodage et le décodage d'URL en langage Go. En particulier, nous pouvons utiliser le package « net/url » pour implémenter un code plus court et des règles de codage d'URL plus complètes, tandis que la mise en œuvre manuelle est relativement simple et facile à comprendre et adaptée aux besoins de codage à petite échelle. Dans les applications pratiques, la méthode de codage appropriée peut être sélectionnée en fonction de scénarios spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn