发布具有特殊字符

时间:2015-07-29 08:45:37

标签: php html summernote

我在php中发布包含特殊字符的数据时遇到问题:

  

字符串:? < > ' - \“`'&%‰€2011>

总是显示

  

字符串:? < > ' - “`'&%“®2011

我更改了表单属性:

<form  id="frmBlog"method="post" enctype="multipart/form-data">

并且我还使用meta属性更改html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

但结果仍然相同。任何人都可以帮助解决这个问题。谢谢

我的简单代码:

<?php
if(isset($_POST['submit'])){
    echo $_POST['content'];
    exit;
}

$content = "String: ? < > ' - \" ´& % ‰ € ® 2011";
?>

<html lang="en">
  <head>
    <title>Test</title>
     <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
  <body>
    <form method="post">
        <textarea name="content" rows="20"><?=
        $content
        ?></textarea>

        <input type="submit" name="submit" value="submit" />
    </form>
  </body>
</html>

输出:

String: ? < > ' - " ´& % ‰ € ® 2011

1 个答案:

答案 0 :(得分:2)

如果您的字符串通过数据库,那可能是问题所在。尝试更改数据库编码选项。 (这对我有用了一次)

否则,请尝试使用utf8_encode()utf8_decode(),看看是否还有问题。如果您仍然这样做,那么问题可能在于您的表单或提交方式(在我看来)。

修改

您的问题是,当您回显内容时,尚未定义字符集,这会导致问题。您应该在<head>之后回复,如下所示:

<html lang='en'>
  <head>
    <title>Test</title>
     <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
  <body>

    <?php
    if(isset($_POST['submit'])){
        echo $_POST['content'];
        exit;
    }

    $content = "String: ? < > ' - \" ´& % ‰ € ® 2011";
    ?>


    <form method="post" action="post.php">
        <textarea name="content" rows="20"><?php
            echo $content;
        ?></textarea>

        <input type="submit" name="submit" value="submit" />
    </form>
  </body>
</html>