无法通过PHP

时间:2016-10-04 11:55:16

标签: php encoding utf-8

我有一个名为 index.php 的文件,其中包含一个表单,该表单将页面重定向到自身,并等待一些UTF-8编码数据。我的问题是,通过表单发送的数据被浏览器交换为问号。

以下是代码:

<?php header('Content-Type: text/html; charset=utf-8'); ?>
<!DOCTYPE html>
  <html>
    <head>
      <meta charset="utf-8" />
    </head>
    <body>
<?php
   if($_POST["action"] == "insert"){
        echo "<pre>";
        print_r($_POST);
        echo "</pre>";

        echo "Some simple UTF-8 text: țșțțáéáéáőúőúőúőúőúőúő";
   }
 ?>

    <form accept-charset="UTF-8" class="form-horizontal" role="form" name="myForm" action="index.php" method="post">
        <input type="hidden" name="action" value="insert">
        <input type="text" name="article_date" class="form-control" size="15" id="article_date" value="">
        <input type="text" name="test_field" value="áááéáéáéáéáéá">
        <input type="text" name="title" class="form-control" id="article_title" placeholder="Some placeholder" value="">
    </form>
   </body>

如果我运行这个文件,然后只是发送表单,我得到这个输出:

  

阵列
  (
      [action] =&gt;插入
      [article_date] =&gt;
      [test_field] =&gt;
      [title] =&gt;
  )

一些简单的UTF-8文本:ţşţţáéáéáőúőúőúőúőúőúő

所以,我从中收集的是,浏览器中的UTF-8编码基本上正常工作,因为普通的UTF-8回显正确显示,但当我尝试通过{{1}发送UTF-8数据时},它没有正确解码。这个问题的可能解决方案是什么?

3 个答案:

答案 0 :(得分:0)

  1. 检查php.ini个文件是否有default_charset = "utf-8";
  2. (完成)有你的PHP标题:header('Content-Type: text/html; charset=utf-8');
  3. (差不多完成)在您的HTML页面中:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. 正手,检查用于编写代码的文本编辑器的默认编码,如果没有,请将其设置为UTF-8。
  5. 检查httpd.conf(假设您使用的是Apache)并检查AddDefaultCharset utf-8是否已设置。
  6. 如果使用它,请添加.htaccess IndexOptions +Charset=UTF-8

答案 1 :(得分:0)

试试这个..

我正在使用Notepad ++ ......

首次创建新文件并仅粘贴此代码..

<?php header('Content-Type: text/html; charset=utf-8'); ?>
<!DOCTYPE html>
  <html>
    <head>
      <meta charset="utf-8" />
    </head>

保存文件后关闭它。并查看浏览器...

重要提示:忘记关闭文件并重新打开..

现在再次打开您的文件并粘贴此代码......

<?php
   if($_POST["action"] == "insert"){
        echo "<pre>";
        print_r($_POST);
        echo "</pre>";

        echo "Some simple UTF-8 text: țșțțáéáéáőúőúőúőúőúőúő";
   }
 ?>

    <form accept-charset="UTF-8" class="form-horizontal" role="form" name="myForm" action="index.php" method="post">
        <input type="hidden" name="action" value="insert">
        <input type="text" name="article_date" class="form-control" size="15" id="article_date" value="">
        <input type="text" name="test_field" value="áááéáéáéáéáéá">
        <input type="text" name="title" class="form-control" id="article_title" placeholder="Some placeholder" value="">
    </form>
   </body>

然后保存您的文件并进行检查..

基本上第一次我们的浏览器在上传浏览器工作正常后不了解utf-8 ......

答案 2 :(得分:-1)

进入数据库的数据不会以UTF8格式上传。

确保:

  • 在创建新表时使用DEFAULT CHARSET=utf8
  • 在查询/插入数据库之前使用SET NAMES utf8

或者您应该在数据库连接期间设置charset $mysqli->set_charset("utf8");