4

我在显示外来字符时遇到问题(带有重音符号的字符,例如:é à ù ç 等)

数据库中的行是这样的:

    Name | Datatype | Charset 
title | varchar(255) | utf8_general_ci

我这样存储它:

function inputFilter($var)
{
    $var = trim(htmlentities(strip_tags($var)));

    if (get_magic_quotes_gpc())
        $var = stripslashes($var);

    $var = mysql_real_escape_string($var);

    return $var;
}
$title = inputFilter($_POST['title']);

我像这样打印它:

print $getfromdb['title'];

这是它的打印方式:

Português //Should be: Português

我尝试在打印中添加:htmlspecialchars、utf8_decode/encode 和 htmlentities,但没有任何帮助!

我已将此添加到标题中:

<meta charset="utf-8">

我究竟做错了什么?

4

5 回答 5

2

要遵循的步骤:

使用 UTF8 的元标记。

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

将您的 PHP 设置为使用 UTF8。

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');

对于 mysql,您希望将表转换为 UTF8。

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

你也可以运行:

 SET NAMES UTF8

作为建立连接后的第一个查询,它将您的数据库连接转换为 UTF8。

于 2013-10-23T16:17:39.970 回答
2

包括mysqli_set_charset($link, "utf8");在您建立的每个连接之后。这将起作用。

于 2013-10-23T17:50:07.740 回答
1

试试这个:

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

<meta charset="UTF-8">是 HTML 5(顺便说一句,UTF-8是大写的)

由于看起来您的测试链也包含一个表单(因为$_POST),所以您必须确保也为表单设置了 UTF-8 字符集。

于 2013-10-23T16:13:28.660 回答
1

SET NAMES utf8在查询/插入数据库之前使用

query("SET NAMES utf8");
于 2013-10-23T17:48:22.580 回答
0

您应该使用字符编码,ISO-8859-1而不是UTF-8如下:

<meta charset="ISO-8859-1">

您要显示的字符是拉丁字符,UTF-8UNICODE编码无法解释拉丁字符。

参考

如果是 mysql,你应该使用latin1charset。

于 2013-10-23T19:04:17.577 回答