【问题标题】:Form POST data is transforming my input表单 POST 数据正在改变我的输入
【发布时间】:2013-09-18 07:46:54
【问题描述】:

我对发布这样的 HTML 表单时返回的 POST 值有疑问:

<form action="" method="POST">
    <input type="text" name="test">
    <input type="submit">
</form>

如果我在输入字段中输入 jöachi@æøåèÆ 并对 $_POST 值进行 var dump,我会得到:

array (size=1)
  'test' => string 'jöachi@æøå&#232;Æ' (length=17)

在结果中,您可以看到 è 符号已替换为 ISO Latin-1 代码 è

我怎样才能让它不那样做?

我页面中的编码是 ISO-8859-10,我尝试将其更改为 UTF-8,但没有成功。

我还认为这可能与我的 apache 中的 magic_quotes 有关,但未启用。

任何帮助表示赞赏

【问题讨论】:

标签: php html apache


【解决方案1】:

在任何情况下使用 UTF-8 对您来说都不是好事吗?如果不是,请尝试明确说明您使用的是 UTF-8 和 meta:

<meta charset="utf-8" />

它可能会解决你的问题。

在我的所有 Web 应用程序中,我都使用 UTF-8,并且我始终确保所有通信都以这种方式进行,甚至所有数据库排序规则。

无论如何,尝试强制您的表单每次都以 UTF-8 格式提交。

<form action="" method="POST" accept-charset="UTF-8">

【讨论】:

  • 如果在脚本顶部设置ini_set('default_charset', 'UTF-8'),则可以省略&lt;meta charset="utf-8" /&gt;
【解决方案2】:

这是字符集问题。

&lt;/head&gt;标签之前使用这一行。

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

如果您在 MySql 中保存数据,则首先将 mysql 排序规则更改为 UTF-8 通用 ci

并将这两行添加到您要保存数据的位置。

mysql_query( "SET NAMES 'utf8'" );
mysql_query( "SET CHARACTER_SET 'utf8'" );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2020-10-29
    • 1970-01-01
    • 2023-03-21
    • 2021-12-05
    相关资源
    最近更新 更多