Maison  >  Article  >  interface Web  >  jquery obtient des caractères chinois tronqués dans l'URL

jquery obtient des caractères chinois tronqués dans l'URL

王林
王林original
2023-05-12 09:08:361458parcourir

En développement web, nous avons souvent besoin d'utiliser jQuery pour obtenir des paramètres dans l'URL. Cependant, lorsque l’URL contient des caractères chinois, on peut facilement rencontrer le problème des caractères chinois tronqués. Dans cet article, nous présenterons comment utiliser jQuery pour obtenir les paramètres chinois dans l'URL et comment résoudre le problème des caractères chinois tronqués.

1. Récupérez les paramètres dans l'URL

Il existe généralement deux façons d'obtenir les paramètres dans l'URL :

  1. Utiliser window.location La méthode .search obtient la chaîne de paramètres et l'analyse en paires clé-valeur.
  2. Utilisez des expressions régulières pour faire correspondre les paramètres de l'URL.

Ci-dessous, nous présentons respectivement ces deux méthodes.

  1. Utilisez la méthode window.location.search pour obtenir la chaîne de paramètres

La méthode window.location.search peut obtenir la chaîne de paramètres dans l'URL, par exemple :

http://example.com/index.html?id=123&name=张三

Vous pouvez utiliser le code suivant pour obtenir la chaîne de paramètre :

var paramsStr = window.location.search; // 返回 ?id=123&name=张三

Ensuite, nous pouvons utiliser la fonction intégrée JavaScript decodeURIComponent() pour analyser la chaîne de paramètres et la convertir sous la forme de la paire clé-valeur :

function getParams(url) {
  var paramsStr = url.split("?")[1];  // 获取参数字符串
  var paramsArr = paramsStr.split("&");  // 将参数字符串转换为数组
  var paramsObj = {};
  for (var i = 0, len = paramsArr.length; i < len; i++) {
    var arr = paramsArr[i].split("=");
    var name = decodeURIComponent(arr[0]);  // 解码中文字符
    var value = decodeURIComponent(arr[1]);
    paramsObj[name] = value;  // 将键值对添加到paramsObj中
  }
  return paramsObj;
}

var params = getParams(window.location.href);
console.log(params.id);  // 输出 123
console.log(params.name);  // 输出 张三

Veillez à utiliser decodeURIComponent() pour décoder les caractères chinois, sinon des caractères tronqués apparaîtront.

  1. Utilisez des expressions régulières pour faire correspondre les paramètres dans l'URL

Les expressions régulières peuvent correspondre aux valeurs de paramètres spécifiées dans l'URL, par exemple : # 🎜 🎜#

http://example.com/index.html?id=123&name=张三

Vous pouvez utiliser l'expression régulière suivante pour faire correspondre la valeur du paramètre id :

var url = window.location.href;
var idReg = /id=(d+)/;
var id = idReg.exec(url)[1];
console.log(id);  // 输出 123

L'expression régulière id=(d+) est utilisée ici pour correspondre à la valeur du Le paramètre id, où d représente un nombre, + représente plusieurs nombres, () est utilisé pour regrouper et capturer les résultats correspondants.

2. Gérer le problème des caractères chinois tronqués

Lors de l'obtention des paramètres chinois dans l'URL, nous rencontrons souvent le problème des caractères chinois tronqués. En effet, les caractères chinois de l'URL doivent être codés pour être transmis correctement. Par conséquent, nous devons décoder les caractères chinois lors de l’obtention des valeurs des paramètres d’URL, sinon des caractères tronqués apparaîtront.

En JavaScript, nous pouvons utiliser les fonctions intégrées encodeURIComponent() et decodeURIComponent() pour encoder et décoder les caractères chinois dans l'URL.

    encodeURIComponent()
encodeURIComponent() est utilisée pour encoder les caractères de l'URL à l'exception des lettres, des chiffres, (,),., !,~ Les caractères spéciaux autres que , *, ', - et _ sont codés. Par exemple :

var str = "http://example.com/index.html?id=123&name=张三";
var encoded = encodeURIComponent(str);
console.log(encoded);  // 输出 http%3A%2F%2Fexample.com%2Findex.html%3Fid%3D123%26name%3D%E5%BC%A0%E4%B8%89

Notez que la fonction encodeURIComponent() n'encodera pas les espaces, mais si vous devez encoder les espaces en %20, vous pouvez utiliser la fonction replace() pour remplacer les caractères d'espace : # 🎜🎜#
var str = "http://example.com/index.html?id=123&name=张 三";
var encoded = encodeURIComponent(str.replace(/s/g, "%20"));
console.log(encoded);  // 输出 http%3A%2F%2Fexample.com%2Findex.html%3Fid%3D123%26name%3D%E5%BC%A0%20%E4%B8%89
# 🎜🎜#

decodeURIComponent()

  1. decodeURIComponent() est utilisée pour décoder les caractères spéciaux dans l'URL, par exemple :
  2. var str = "http%3A%2F%2Fexample.com%2Findex.html%3Fid%3D123%26name%3D%E5%BC%A0%E4%B8%89";
    var decoded = decodeURIComponent(str);
    console.log(decoded);  // 输出 http://example.com/index.html?id=123&name=张三
    # 🎜🎜#Note De plus, si les caractères chinois de l'URL ne sont pas correctement encodés, le décodage entraînera des caractères tronqués. Si vous rencontrez cette situation, vous pouvez utiliser la fonction unescape() pour décoder l'URL :
var str = "http://example.com/index.html?id=123&name=张三";
var encoded = escape(str); // 编码
var decoded = unescape(encoded); // 解码
console.log(decoded); // 输出 http://example.com/index.html?id=123&name=张三

A noter ici que la fonction unescape() a été abandonnée et n'est pas recommandée. Il est recommandé d'encoder correctement les caractères chinois lors de la transmission d'URL afin d'éviter les caractères tronqués.

3. Conclusion

L'obtention de paramètres dans l'URL est une opération de base dans le développement Web, et le problème des caractères chinois tronqués est également une difficulté de développement courante. Pour éviter ces problèmes, nous pouvons utiliser les fonctions encodeURIComponent() et decodeURIComponent() pour encoder et décoder l'URL. Dans le même temps, les caractères chinois doivent également être décodés lors de l'obtention des valeurs des paramètres d'URL, sinon des caractères tronqués apparaîtront. Même si ces opérations peuvent être un peu fastidieuses, elles sont indispensables pour les sites chinois.

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