将UTF-8字符集更改为ISO / IEC 8859-2:1999 in href

时间:2016-09-05 08:53:14

标签: php html

我有一个非常简单的表单,由两个文件组成:

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>"
?>

在表单字段'name'中填写波兰语字符(ł±źćę)

当您点击SEND脚本时,会为我生成一个表单链接:

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

链接应以以下形式生成:

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

3 个答案:

答案 0 :(得分:1)

你试过了吗?

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

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

答案 1 :(得分:1)

%xx编码形式为percent-encoding或“网址编码”。您可以使用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']);
    
  3. 然后rawurlencode($name)会产生%B3+%B1+%BC+%E6+%EA+%F3

答案 2 :(得分: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