jquery mendapat aksara Cina yang kacau dalam url

王林
Lepaskan: 2023-05-12 09:08:36
asal
1489 orang telah melayarinya

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=张三
Salin selepas log masuk
Salin selepas log masuk

Rentetan parameter boleh diperoleh menggunakan kod berikut:

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

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);  // 输出 张三
Salin selepas log masuk

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=张三
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk
  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=张三
Salin selepas log masuk

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=张三
Salin selepas log masuk

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!

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!