1

我已经经历了几个关于堆栈溢出的类似问题,但没有一个给出结果。在我的简单形式中,我希望允许人们发布字符串,例如"Pagé Caiçara"

检查我的html头我有以下元:<meta charset="UTF-8">

我的表单标签

<form id="contato-form" action="some_file.php" method='POST' accept-charset='UTF-8'>

而且我还有一个隐藏输入来强制 utf 编码:

<input name="utf8" type="hidden" value="&#x2713;" />

但是,如果尝试提交“Pagé Caiçara”并且他们检查我的 $_POST 给了我,它们似乎都不起作用:

echo print_r($_POST);

输出:

Array ( [nome] => Pagé Caiçara [empresa] => Company [email] => my@mail.com.br [site] => nenhum.com.br [telefone] => 12 55558349 [mensagem] => águia de água [utf8] => ✓ ) 1

那么......接下来我应该尝试什么?提前致谢。

4

1 回答 1

2

您的问题的答案取决于您使用该输出的位置:

  1. 在 PHP 中处理并返回结果/打印 html 页面

    如果您处理给定的数据并在 html 页面中打印结果,<meta charset="utf-8">输出将正确显示。

  2. 在 PHP 中处理并打印为纯文本

    如果您想打印简单的输出,例如print_r()在脚本开头添加此行:header('Content-Type: text/plain; charset=utf-8');

  3. 在 PHP 中处理并写入数据库

    如果您已将数据库/表字符集和排序规则设置为正确的值(utf-8),则结果将正确插入数据库中(确保在使用 DB 操作之前执行这些行

mysql_query("SET NAMES 'utf8'", $db_link);

mysql_query("SET CHARACTER SET utf8", $db_link);

mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $db_link);

于 2013-02-07T14:44:42.147 回答