0

如何在 PHP 中将接收到的 http 变量的字符集设置为 UTF-8?

我有一个使用POST带有 1 个输入字段的方法的 html 表单。但是当我提交表单并回显从输入字段中检索到的内容时,$_POST['input_name']我得到了这个:KrkiÄ - 但我输入(并且我需要)这个:Krkič

那么我该如何解决这个问题?

我现在想通了。:)

如果我想将内容添加到 MYSQL,那么我需要添加:

if(!$mysqli->set_charset("utf8")){
printf("Error loading character set utf8: %s\n",$mysqli->error);
}

如果我只需要回显内容然后添加此元标记

<meta charset="utf-8">

进入html头就足够了。

4

3 回答 3

3

PHP 中没有全局默认字符集——很多东西都是编码感知的,每个都需要独立配置。

mb_internal_encoding仅适用于多字节字符串系列函数,因此仅当您已经在使用它们时它才有效(大多数时候您需要在 PHP 代码中操作多字节文本时这样做)。

错误设置的编码会给您带来问题的其他地方包括:

  • 源文件本身(使用哪种编码保存在磁盘上?)
  • 发送到浏览器的 HTTP 标头(显示接收到的内容为哪种编码?)
  • 您的数据库连接(应该使用哪种编码来解释您的查询?将结果发送回您的哪种编码?)

这些中的每一个都需要独立解决,而且大多数情况下,它们还需要彼此达成一致。

因此,仅仅说“我想显示一些字符”是不够的。您还需要展示如何显示它们、它们来自哪里以及广告中的 HTML 编码是什么。

于 2013-04-09T12:49:18.403 回答
1

您可以使用:

<meta charset="UTF-8" />
于 2013-04-09T12:47:53.860 回答
1

在你的php文件顶部放置这个

 header('Content-Type: text/html; charset="UTF-8"');
于 2013-04-09T12:47:57.850 回答