2016-09-05 20 views
-1

我有一個非常簡單的形式,包括以下兩個文件:更改UTF-8字符集,以ISO/IEC 8859-2:1999 HREF

form.php的

<form action="test.php" method="post"> 

<input type='text' name = 'name' value="ł ą ź ć ę ó" >  

<input id='submit' type='submit' name = 'submit' value="SEND"> 

</form>` 

和test.php的

<?php 
$name = $_POST['name']; 

echo "<a href='http://myaddress/$name/'>NAME</a>" 
?> 

在表單字段「姓名」填寫波蘭字符(L A z對於CęO)

當你點擊發送腳本生成了我形式的鏈接:

"<a href='http://myaddress/l a ź ć e ó/'>NAME</a>" 

鏈接應該產生的形式:

"<a href='http://myaddress/%B3+%B1+%BC+%E6+%EA+%F3/'>NAME</a>" 

回答

1

%xx編碼形式爲percent-encoding或 「URL編碼」。您可以使用rawurlencode函數生成它。該函數獲取字符串的原始字節並將其轉換爲百分比編碼組。因此,確切的輸出取決於你輸入什麼字節,這意味着你的文本的編碼是什麼。

如果你需要「ź」編碼爲%BC,那麼它必須用ISO-8859-2編碼說)。有兩種方法來獲取:通過添加適當的屬性

  1. 確保您的表單提交作爲ISO-8859-2:

    <form accept-charset="iso-8859-2"> 
    
  2. 如果你沒有在編碼提交你需要的話,而不是將其轉換在服務器上:

    $name = iconv('UTF-8', 'ISO-8859-2', $_POST['name']); 
    

然後rawurlencode($name)應導致%B3+%B1+%BC+%E6+%EA+%F3

1

你試過:

<?php 
$name = $_POST['name']; 

echo "<a href='http://myaddress/' . urlencode($name) . '/'>NAME</a>" 
?> 
+0

沒有工作。我得到的鏈接:http:// myaddress/ –

0

您可以使用進行urlencode(STR)。並且urldecode(str)進行反轉。

$name = urlencode($_POST['name']); 

echo "<a href='http://myaddress/$name/'>NAME</a>" 

這將導致成類似,

<a href='http://myaddress/%C5%82+%C4%85+%C5%BA+%C4%87+%C4%99+%C3%B3/'>NAME</a> 

參考 http://php.net/manual/en/function.urlencode.php

+0

我得到的鏈接:NAME