PHP Not supporitng UTF-8?


PHP Not supporitng UTF-8?

你好,我一直在尝试制作{查看/编辑/添加脚本}我从谷歌得到的..但主要问题是它不支持阿拉伯语[UTF-8]编码

这是代码:

    <?php 
    ini_set('default_charset', 'UTF-8');
    setlocale(LC_ALL, 'UTF-8');
    date_default_timezone_set('Asia/Riyadh');
    error_reporting(0);
    require 'database.php';
    if ( !empty($_POST)) {
        // keep track validation errors
        $nameError = null;
        $uidError = null;
        $actionError = null;
        $reasonError = null;
        // keep track post values
        $name = utf8_encode($_POST['Name']);
        $uid = utf8_encode($_POST['uid']);
        $action = utf8_encode($_POST['Action']);
        $reason = utf8_encode($_POST['Reason']);
        // validate input
        $valid = true;
        if (empty($name)) {
            $nameError = 'Please enter Name';
            $valid = false;
        }
        if (empty($uid)) {
            $uidError = 'Please enter UID';
            $valid = false;
        }
        if (empty($action)) {
            $actionError = 'Please enter action';
            $valid = false;
        }
        if (empty($reason)) {
            $reasonError = 'Please enter reason';
            $valid = false;
        }
        // insert data
        if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO clan187 (name,uid,action,reason) values(?, ?, ?, ?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($name,$uid,$action,$reason,));
            Database::disconnect();
            header("Location: index.php");
        }
    }
?>
<head>
    <meta charset="utf-8">
    <link   href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
                <div class="span10 offset1">
                    <div class="row">
                    <br>
                    </div>
                    <form class="form-horizontal" action="create.php" method="post">
                      <div class="control-group <?php echo !empty($nameError)?'error':'';?>">
                        <label class="control-label">Name</label>
                        <div class="controls">
                            <input name="Name" type="text"  placeholder="Name" value="<?php echo !empty($name)?$name:'';?>">
                            <?php if (!empty($nameError)): ?>
                                <span class="help-inline"><?php echo $nameError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($uidError)?'error':'';?>">
                        <label class="control-label">UID</label>
                        <div class="controls">
                            <input name="uid" type="text"  placeholder="UUID" value="<?php echo !empty($uid)?$uid:'';?>">
                            <?php if (!empty($uidError)): ?>
                                <span class="help-inline"><?php echo $uidError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($actionError)?'error':'';?>">
                        <label class="control-label">Action</label>
                        <div class="controls">
                            <input name="Action" type="text" placeholder="Action" value="<?php echo !empty($action)?$action:'';?>">
                            <?php if (!empty($actionError)): ?>
                                <span class="help-inline"><?php echo $actionError;?></span>
                            <?php endif;?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($reasonError)?'error':'';?>">
                        <label class="control-label">Reason</label>
                        <div class="controls">
                            <input name="Reason" type="text"  placeholder="Reason" value="<?php echo !empty($reason)?$reason:'';?>">
                            <?php if (!empty($reasonError)): ?>
                                <span class="help-inline"><?php echo $reasonError;?></span>
                            <?php endif;?>
                        </div>
                      </div>
                      <div class="form-actions">
                          <button type="submit" class="btn btn-success">Create</button>
                          <a class="btn" href="index.php">Back</a>
                        </div>
                    </form>
                </div>
    </div> <!-- /container -->
  </body>
</html>

好吧,不知道为什么它对我不起作用任何帮助都会很棒<3

你还没有说为什么它不起作用。您可能需要更加冗长。

除非您指定,否则表单将以用户的区域设置编码发送。您需要使用编码设置表单。UTF-8 将允许来自任何区域/语言的字符:

<form class="form-horizontal" action="create.php" method="post" accept-charset="UTF-8">

现在,您的$_POST[]元素已经是 UTF-8 编码的,因此您无需转换它们。将它们更改为:

    $name = $_POST['Name'];
    $uid = $_POST['uid'];
    $action = $_POST['Action'];
    $reason = $_POST['Reason'];
  1. 确保文件中存在以下内容:

    header('Content-type: text/html; charset=utf-8');
    
  2. 文档标题中还有一个元标记。

    meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
    
  3. 确保您的数据源/目标已针对 UTF-8 进行排序。

  4. 然后,它唯一的另一件事可能是您的文本编辑器编码。应为 UTF-8,不带 BOM。无论文件中发生了什么,如果文件本身不是 UTF-8,那么它将无法工作。