Rumah  >  Artikel  >  hujung hadapan web  >  jquery mendapat aksara Cina yang kacau dalam url

jquery mendapat aksara Cina yang kacau dalam url

王林
王林asal
2023-05-12 09:08:361544semak imbas

Dalam pembangunan web, kita selalunya perlu menggunakan jQuery untuk mendapatkan parameter dalam URL. Walau bagaimanapun, apabila URL mengandungi aksara Cina, kita boleh menghadapi masalah aksara Cina yang kacau. Dalam artikel ini, kami akan memperkenalkan cara menggunakan jQuery untuk mendapatkan parameter Cina dalam URL, dan cara menangani masalah aksara Cina yang kacau.

1. Dapatkan parameter dalam URL

Biasanya terdapat dua cara untuk mendapatkan parameter dalam URL:

  1. Gunakan kaedah window.location.search untuk mendapatkan rentetan parameter , dan kemudian dihuraikan ke dalam pasangan nilai kunci.
  2. Gunakan ungkapan biasa untuk memadankan parameter dalam URL.

Di bawah ini kami memperkenalkan kedua-dua kaedah ini masing-masing.

  1. Gunakan kaedah window.location.search untuk mendapatkan rentetan parameter

Kaedah window.location.search boleh mendapatkan rentetan parameter dalam URL, contohnya:

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

Rentetan parameter boleh diperoleh menggunakan kod berikut:

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

Kemudian, kita boleh menggunakan fungsi terbina dalam JavaScript decodeURIComponent() untuk menghuraikan rentetan parameter dan menukarnya ke dalam bentuk pasangan nilai kunci:

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);  // 输出 张三

Berhati-hati untuk menggunakan decodeURIComponent() untuk menyahkod aksara Cina, jika tidak, aksara bercelaru akan berlaku.

  1. Gunakan ungkapan biasa untuk memadankan parameter dalam URL

Ungkapan biasa boleh memadankan nilai parameter yang ditentukan dalam URL, contohnya:

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

boleh Gunakan ungkapan biasa berikut untuk memadankan nilai parameter id:

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

Di sini ungkapan biasa id=(d+) digunakan untuk memadankan nilai parameter id, dengan d mewakili nombor, + mewakili berbilang nombor, dan () digunakan Tangkap hasil padanan dalam kumpulan.

2. Menangani masalah aksara Cina yang kacau-bilau

Apabila mendapatkan parameter bahasa Cina dalam URL, kita sering menghadapi masalah aksara Cina yang kacau. Ini kerana aksara Cina dalam URL perlu dikodkan untuk dihantar dengan betul. Oleh itu, kita perlu menyahkod aksara Cina apabila mendapatkan nilai parameter URL, jika tidak, aksara bercelaru akan muncul.

Dalam JavaScript, kita boleh menggunakan fungsi terbina dalam encodeURIComponent() dan decodeURIComponent() untuk mengekod dan menyahkod aksara Cina dalam URL.

  1. encodeURIComponent()

encodeURIComponent() fungsi digunakan untuk mengekod aksara dalam URL kecuali huruf, nombor, (,),.,!,~,*, ',- Aksara khas selain daripada _ dikodkan. Contohnya:

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

Ambil perhatian bahawa fungsi encodeURIComponent() tidak akan mengekodkan ruang, tetapi jika anda perlu mengekodkan ruang menjadi %20, anda boleh menggunakan fungsi replace() untuk menggantikan aksara ruang:

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
  1. decodeURIComponent()

decodeURIComponent() fungsi digunakan untuk menyahkod aksara khas dalam URL, contohnya:

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=张三

Perlu diambil perhatian bahawa jika Aksara Cina dalam URL tidak Pengekodan yang betul akan mengakibatkan penyahkodan bercelaru. Jika anda menghadapi situasi ini, anda boleh menggunakan fungsi unescape() untuk menyahkod 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=张三

Perhatikan di sini bahawa fungsi unescape() telah ditinggalkan dan tidak disyorkan. Adalah disyorkan untuk mengekodkan aksara Cina dengan betul semasa menghantar URL untuk mengelakkan aksara bercelaru.

3. Kesimpulan

Mendapatkan parameter dalam URL ialah operasi asas dalam pembangunan web, dan masalah aksara Cina yang bercelaru juga merupakan kesukaran pembangunan yang biasa. Untuk mengelakkan masalah ini, kita boleh menggunakan fungsi encodeURIComponent() dan decodeURIComponent() untuk mengekod dan menyahkod URL. Pada masa yang sama, aksara Cina juga perlu dinyahkod apabila mendapatkan nilai parameter URL, jika tidak, aksara bercelaru akan muncul. Walaupun operasi ini mungkin sedikit membosankan, ia amat diperlukan untuk laman web Cina.

Atas ialah kandungan terperinci jquery mendapat aksara Cina yang kacau dalam url. 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