10/10/2018, 00:08

[?] urldecode ko đúng chuỗi urlencode

Tình hình là tớ dùng hàn urlencode để mã hóa chuỗi URL, nhưng sau đó khi paste lên address bar của (các) trình duyệt; rồi dùng hàm urldecode để giải mã nhưng nó giải mã ko đúng: những kí tự 1 dấu thì đúng; nhưng những kí tự có 2 dấu trở lên (ề, ố, ậ...) thì nó decode ko đc.

Thử trên google, nó mã hóa ra cùng 1 chuỗi giống tớ; nhưng nó giải mã đc

Có huynh đệ nào gặp trường hợp này ko? Và cách giải quyết ra sao?

Xin cám ơn trước
vtnphong viết 02:18 ngày 10/10/2018
ủa, url để tiếng Việt được sao?
temp2 viết 02:20 ngày 10/10/2018
Được gửi bởi vtnphong
ủa, url để tiếng Việt được sao?
dư sức, IE7 còn hỗ trợ Unicode nữa là; nhưng chưa có browser nào hỗ trợ tốt hết

làm như vậy mang tính nhân văn hơn, nó có "tính" người hơn

[=========> Bổ sung bài viết <=========]

up lên nào http://javascriptbank.com/ - 2.000+ free javascripts
tiendx2002 viết 02:24 ngày 10/10/2018
Chả hiểu em code thế nào ?
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL ENCODE &amp; DECODE UNICODE</title>
</head>

<body>
Decoded variable: test = 
<?php
echo urldecode($_GET['test']);
?>
<a href="?test=<?php echo urlencode("à á ả ã ạ ề ố ậ");?>">test urlencode </a>
</body>
</html>
temp2 viết 02:13 ngày 10/10/2018
sau khi đã check kĩ lại, tớ thấy nó urldecode đúng, chỉ có vấn đề là
do tớ dùng cái mod url_rewrite của Apache và cái này nó truyền ko đúng
chuỗi Unicode; có pác nào biết cách giải quyết vấn đề này ko?

cái rule của tớ như sau:
RewriteRule ^(.*)$ test.php?act=$1 [L]

Xin cám ơn nhiều
tiendx2002 viết 02:24 ngày 10/10/2018
Được gửi bởi temp2
sau khi đã check kĩ lại, tớ thấy nó urldecode đúng, chỉ có vấn đề là
do tớ dùng cái mod url_rewrite của Apache và cái này nó truyền ko đúng
chuỗi Unicode; có pác nào biết cách giải quyết vấn đề này ko?

cái rule của tớ như sau:
RewriteRule ^(.*)$ test.php?act=$1 [L]

Xin cám ơn nhiều
index.php
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL ENCODE &amp; DECODE UNICODE</title>
</head>

<body>
Decoded variable: test = 
<?php
echo urldecode($_GET['test']);
?>
<a href="?test=<?php echo urlencode("à á ả ã ạ ề ố ậ");?>">test urlencode </a>
</body>
</html>
.htaccess
Code:
RewriteEngine On
RewriteRule (.*).html index.php?test=$1
Test URL:
Code:
http://localhost/urlencodedecode/%C3%A0+%C3%A1+%E1%BA%A3+%C3%A3+%E1%BA%A1+%E1%BB%81+%E1%BB%91+%E1%BA%AD.html
Em thử xem,
Thân mến.
temp2 viết 02:14 ngày 10/10/2018
cũng vậy à anh ơi,

anh thử mấy chuỗi này xem
của em: hi%E1%BB%87u%20%E1%BB%A9ng
google: hi%E1%BB%87u+%E1%BB%A9ng

đều ra hi�?u ứng
tiendx2002 viết 02:15 ngày 10/10/2018
Được gửi bởi temp2
cũng vậy à anh ơi,

anh thử mấy chuỗi này xem
của em: hi%E1%BB%87u%20%E1%BB%A9ng
google: hi%E1%BB%87u+%E1%BB%A9ng

đều ra hi�?u ứng
Code:
<?php
if ($_REQUEST['testtext'] != "") {
	header('Location: '.urlencode($_REQUEST['testtext']).'.html');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL ENCODE &amp; DECODE UNICODE</title>
</head>

<body>
<p>Decoded variable: test = 
  <?php
echo urldecode($_GET['test']);
?>
  <a href="?test=<?php echo urlencode("à á ả ã ạ ề ố ậ");?>">test urlencode </a></p>
<form id="form1" name="form1" method="post" action="">
  <label>Test text
  <input name="testtext" type="text" id="testtext" value="hiệu ứng" />
</label>
  <label>
  <input type="submit" name="button" id="button" value="Submit" />
  </label>
</form>
<p>&nbsp; </p>
</body>
</html>
Trước tiên em hãy dùng code của anh đi đã, rồi sửa theo ý em, chứ cứ đòi tích hợp khi chưa thấy nó WORK thì mệt lắm .
Thân mến.
temp2 viết 02:13 ngày 10/10/2018
ây da, anh ko hiểu ý em rồi;

em đã thử cái ví dụ trc anh đưa, nó vẫn ra sai nên mới có câu: "cũng vậy à anh ơi,"

còn cái vd anh mới đưa lên nữa là về 2 cái hàm urlencode, urldecode mà; nhưng em đã nói ở trên
sau khi đã check kĩ lại, tớ thấy nó urldecode đúng, chỉ có vấn đề là do tớ dùng cái mod url_rewrite của Apache và cái mod này nó truyền ko đúng chuỗi Unicode; có pác nào biết cách giải quyết vấn đề này ko?
bi giờ anh thử dùng cái rule bên dưới
RewriteRule (.*).html index.php?test=$1
rồi truyền cho nó các chuỗi này thử xem:
1. hiệu ứng
2. hi%E1%BB%87u%20%E1%BB%A9ng (của em)
3. hi%E1%BB%87u+%E1%BB%A9ng (của G)

rồi anh in ra thử coi có phải nó ra chuỗi "hi??u ứng" ko?
tiendx2002 viết 02:11 ngày 10/10/2018
Hi em,
Vấn đề là làm sao mà em ra được chuỗi sai,
Trong khi anh chỉ ra được chuỗi đúng ấy chứ.
Em sử dụng toàn bộ là các file anh nói mà vẫn ra sai thì anh bó tay.
Như em đã thấy, code latest có redirect về URL encoded, anh test thử với chuỗi hiệu ứng của em, và mọi thứ vẫn proper. Chả hiểu em làm sao để ra được chuỗi kia?
Trước tiên anh nghĩ em thử tạo thư mục urlencodedecode và lắp đám file của anh vào, nhớ UTF-8, dùng file index.php mới nhất ở post bên trên.
Không có bác nào ở diễn đàn làm third party nhỉ, mệt thật.
Thân mến.
Bài liên quan
0