【问题标题】:Post data with special character [duplicate]发布带有特殊字符的数据[重复]
【发布时间】:2015-10-20 03:26:30
【问题描述】:

在 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

【问题讨论】:

  • 您是否检查过您的浏览器是否真的遵循字符集指令?
  • 您是否也检查过源文件的编码?
  • 您的 .php 源文件也必须使用 utf-8 编码保存。
  • 源文件的编码应该没有区别。您看到的输出是您的浏览器/客户端尝试将 UTF-8 编码字符串解码为 ISO-8859-1(或其他单字节字符集)。

标签: php html summernote


【解决方案1】:

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

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

编辑:

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

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

【讨论】:

  • 我试过了还是不行
  • 您确定您的字符串中没有空格或隐藏字符吗?
  • 我只是用我的简单代码修改我的帖子
  • 所以基本上问题在于这是一个测试。在生产环境中,您的代码可能会工作;)
  • @hermans 如果您对服务器有任何控制权,那么使用 HTTP 标头设置字符集要比使用 &lt;meta&gt; 标记好得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
相关资源
最近更新 更多