ForHosting KIT · Outils pour développeurs

Encodeur pour cent RFC 3986

Selon la règle stricte de la RFC 3986, hello world!'()* devient hello%20world%21%27%28%29%2A : seuls les lettres, chiffres, tiret, point, souligné et tilde restent tels quels. Au décodage, une séquence pour cent incomplète arrête tout au lieu d’inventer des caractères. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
Texte
hello world!'()*
Mode de calcul
Encode
Vous obtenez
Résultat
hello%20world%21%27%28%29%2A
Longueur
28
Forme standard
RFC 3986
Non réservés
A-Z a-z 0-9 - . _ ~

RFC 3986 définit la grammaire URI moderne et l’ensemble exact de caractères non réservés qui peuvent apparaître sans encodage pour cent : lettres, chiffres, tiret, point, souligné et tilde. Cette capacité applique la carte stricte RFC 3986 dans les deux sens : encode transforme chaque octet UTF-8 non non-réservé en %HH majuscules, et decode restaure le texte brut en échouant immédiatement sur les séquences pour cent incomplètes ou non hexadécimales.

En quoi l’encodage RFC 3986 diffère d’encodeURIComponent

L’encodage pour cent remplace les octets interdits par un signe pour cent et deux chiffres hexadécimaux afin qu’une chaîne voyage en sécurité dans un composant URI. La section 2.3 de RFC 3986 nomme l’ensemble non réservé—ALPHA, DIGIT, tiret, point, souligné et tilde—et indique que ces caractères ne doivent pas être encodés pour cent à la production des données.

Tout autre octet, y compris gen-delims et sub-delims réservés et tous les octets UTF-8 non ASCII, doit être encodé lorsque la valeur est traitée comme donnée opaque. encodeURIComponent de JavaScript utilise un ensemble non échappé plus large qui conserve aussi comme littéraux l’exclamation, l’apostrophe, les parenthèses ouvrante et fermante et l’astérisque. Ce choix colle au comportement historique des formulaires navigateur mais s’écarte de l’encodage strict de composant RFC 3986 et de nombreuses bibliothèques serveur en Python, Go, Java ou Rust qui ne laissent seuls que les six marques non réservées.

Le mode de panne concret est subtil : une signature ou une clé de cache construite à partir de « hello! world » peut hacher différemment si un côté émet hello! world et l’autre hello%21world.

Cet outil applique toujours la carte RFC à l’encodage, avec de l’hex majuscule, de sorte que des caractères multi-octets comme café deviennent caf%C3%A9 et un espace devient %20, tandis que ! ' ( ) * deviennent %21 %27 %28 %29 %2A. Le décodage accepte des chiffres hex majuscules ou minuscules, vérifie que chaque pour cent est suivi d’exactement deux chiffres hex, puis reconstruit le texte UTF-8.

Ce que vous envoyez et ce que vous recevez

Envoyez un champ chaîne obligatoire nommé text et un champ mode optionnel. Le mode encode échappe le texte pour cent selon la règle non réservée de RFC 3986 et renvoie la chaîne transformée dans result. Le mode decode valide chaque séquence pour cent, inverse l’encodage et renvoie du texte UTF-8 brut dans result.

Les échecs de validation ne consomment pas le solde prépayé. Les contrôles classiques incluent l’encodage d’une phrase avec espaces et points d’exclamation pour voir %20 et %21 côte à côte, le décodage de caf%C3%A9%21 en café!, et le rejet d’une chaîne qui se termine par un pour cent nu ou contient %ZZ.

Où l’encodage strict RFC 3986 apparaît dans le travail réel

Les services backend qui construisent des URL de redirection signées, des chaînes de paramètres OAuth 1.0 ou des requêtes canoniques HMAC exigent souvent un encodage pour cent conforme à RFC 3986 plutôt qu’à encodeURIComponent du navigateur, car les chaînes de base de signature traitent ! ' ( ) * comme caractères à échapper.

Les clients mobiles et de bureau hors écosystème JavaScript embarquent en général des bibliothèques qui suivent déjà la règle non réservés uniquement ; un middleware Node qui utiliserait encodeURIComponent pour les mêmes valeurs produirait des échecs de signature intermittents seulement lorsqu’un titre de produit ou un nom d’affichage contient une apostrophe ou une parenthèse. Les ingénieurs support collent des chaînes à moitié encodées depuis tickets et journaux et ont besoin d’un chemin de décodage qui échoue clairement sur les escapes tronqués au lieu d’inventer des caractères.

Les auteurs de cursus fondations web veulent une page dédiée à l’encodage pour cent RFC 3986 avec l’ensemble non réservé explicite plutôt que d’enterrer le sujet sous un encodeur URL générique ou un outil Base64, car l’intention de recherche et la différence !'() * sont ce que cherchent étudiants et intégrateurs. Les ingénieurs de localisation vérifient que les langues multi-octets font l’aller-retour sans mojibake.

Si vous avez besoin de la sémantique encodeURIComponent, d’un encodage URI complet léger qui préserve les délimiteurs structurels, de Base64 ou de génération de slugs, traitez-les comme des intentions de recherche et des pages d’atterrissage distinctes plutôt que de surcharger cette page encodeur RFC 3986.

OAuth et chaînes de requête signées

Encodez pour cent les valeurs de paramètre avec l’ensemble non réservé strict RFC 3986 afin que les chaînes de base HMAC et OAuth correspondent aux pairs non JavaScript qui échappent ! ' ( ) *.

Décoder des fragments URI de journaux ou collés

Décodez des fragments encodés pour cent issus de journaux et de tickets en UTF-8 lisible, avec des échecs fermes sur les séquences pour cent incomplètes ou non hexadécimales.

Quelle différence avec encodeURIComponent ?

encodeURIComponent laisse ! ' ( ) * non échappés. Cet outil ne suit que les caractères non réservés RFC 3986 (A–Z a–z 0–9 - . _ ~) et encode pour cent ces quatre sub-delims en %21 %27 %28 %29 %2A.

Puis-je encoder et décoder ?

Oui. Mettez mode à encode (par défaut) pour échapper pour cent le texte brut selon RFC 3986, ou mode à decode pour retrouver le texte UTF-8 depuis une chaîne encodée pour cent.

Les chiffres hex sont-ils en majuscules ou minuscules à l’encodage ?

L’encodage émet des chiffres hexadécimaux en majuscules (%2A et non %2a), forme préférée de RFC 3986. Le décodage accepte l’hex majuscule et minuscule.

Combien coûte l’encodeur pour cent RFC 3986 ?

L’outil navigateur est gratuit et s’exécute en local.

Que se passe-t-il si une séquence pour cent est mal formée ?

Le décodage s’arrête et vous indique la position du problème, par exemple un signe pour cent isolé en fin de texte ou une séquence comme %G1. Vous ne recevez jamais un texte à moitié décodé avec des caractères inventés.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/enc/url-rfc3986

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/enc/url-rfc3986 \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"hello world!'\''()"}'
{
  "text": "hello world!'()"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.url_rfc3986",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

De nombreux outils du quotidien suivent encodeURIComponent de JavaScript, qui laisse volontairement non échappés points d’exclamation, apostrophes, parenthèses et astérisques—caractères que RFC 3986 classe en sub-delims et que les passerelles strictes, les signataires OAuth et les clients HTTP multi-langages attendent souvent sous la forme %21 %27 %28 %29 %2A. Utilisez-la lorsque votre contrat exige un « percent-encode selon RFC 3986 », lorsque vous devez coller un pair non JavaScript qui ne conserve que les six signes de ponctuation non réservés, ou lorsque vous voulez un seul outil navigateur gratuit et une API payante qui s’accordent octet par octet sur la même fonction pure. Le tarif des appels API réussis est la base publiée de $0.002 par élément ; les échecs de validation ne sont pas facturés.

En quoi l’encodage RFC 3986 diffère d’encodeURIComponent

Un pour cent final nu, une séquence comme %G1 ou un UTF-8 invalide après expansion lèvent invalid_input avec un message de position au lieu de renvoyer un demi-résultat corrompu. Le chemin est un travail pur de chaînes, sans réseau, sans graines aléatoires et sans horloge murale, donc des entrées identiques produisent toujours le même JSON. Le tarif API réussi est la base publiée de $0.002 par élément.

Ce que vous envoyez et ce que vous recevez

Lorsque mode est omis, encode est la valeur par défaut afin qu’un seul payload reste utile. La réponse répète mode et le text d’origine, inclut result et la length de result, et étiquette le contrat avec standard égal à RFC 3986, un court résumé unreserved et also_escaped listant les quatre caractères sub-delim qui distinguent cette carte d’encodeURIComponent. Text manquant, objets non chaîne, valeurs de mode non prises en charge, chaînes plus longues que le maximum documenté, escapes pour cent incomplets, chiffres non hex après un pour cent et erreurs hôte sur UTF-8 décodé invalide échouent avec invalid_input et un message clair en anglais. Le tarif API réussi est la base publiée de $0.002 par élément, alignée sur les autres encodeurs de niveau parse du catalogue.

Où l’encodage strict RFC 3986 apparaît dans le travail réel

Comme cette capacité est un moteur parse pur, le tarif API est la base publiée de $0.002 par élément réussi et une validation échouée ne consomme pas le solde.

Fixtures golden multi-langages

Générez des vecteurs d’encodage et de décodage sur lesquels les bibliothèques URL Python, Go, Java et Rust s’accordent, y compris les caractères sub-delim que les navigateurs laissent souvent littéraux.

Que se passe-t-il si une séquence pour cent est mal formée ?

Le décodage échoue avec invalid_input, en indiquant la position et l’escape incorrect (par exemple un % incomplet ou des chiffres non hex). Aucun débit pour les échecs de validation.

Consulter la documentation complète du KIT →