【问题标题】:POST variable and persian charactersPOST 变量和波斯字符
【发布时间】:2015-05-11 21:07:16
【问题描述】:

我在发送波斯字符时遇到了 $_POST 变量的问题

<?php
if (isset($_POST['caption'])){
    $captione  = $_POST['caption']; // I sent ض from form
    $cap = str_replace('ض','you',$captione);
    echo $captione.'<br>'; //output ض
    echo $cap; //output ض
}else{
    loginForm();
}

function loginForm(){
    echo '<form id = "myform" action="t.php" method="POST">';
    echo 'caption: <textarea id="user_data" name="caption" type="text" ></textarea>';
    echo '<input type="submit" value="Send File"  />';
    echo '</form>';
}
?>

captione==cap
str_replace 在标题中找不到 ض
但是当echo $_POST['caption'] 输出是ض

【问题讨论】:

    标签: php unicode persian


    【解决方案1】:

    将表单页面字符编码更改为 UTF-8 并提交表单时问题已解决。 (w3schools)

    <meta charset="utf-8">
    

    【讨论】:

      【解决方案2】:

      尝试使用Multibyte String Functions,例如mb_ereg_replace() 来替换用户输入中的波斯语字符。

      【讨论】:

      • 没用!! $captione = 'ض';$cap = str_replace('ض','你',$captione);此代码工作正常,但从表单接收时不起作用
      • 那么可能你的编码不​​匹配。
      • 什么是表单编码?!?喜欢页面编码?还是?!?
      • 在提交表单时将accept-charset 标头设置为UTF-8
      • 将表单页面字符编码更改为 unicode 并提交表单时问题已解决。我的英语很好:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 2020-04-17
      相关资源
      最近更新 更多