PHP和Mysql UTF-8(特殊字符)的问题

时间:2011-08-16 03:38:35

标签: php mysql utf-8 special-characters

我有一个带有一个文本框的表单(ProductTitle)

如果我在文本框中编写示例“Étuit”并单击“保存”,我将数据发布在名为“产品”的表中。 ProductTitle数据库中的结果是τtuit。我关注的是特殊性格。我没有把É放在数据库中,而是得到了É

当我将数据库中的产品标题(“ttuit”)加载到跨度中时。这表明正确。
但是当我在文本框中加载它以编辑产品标题时,显示Étuit。

任何人都知道原因。

我把它放在html头

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

注意:当我在表单上单击“保存”时,数据将使用jquery ajax方法发布。

8 个答案:

答案 0 :(得分:10)

尝试在使用数据库之前设置客户端编码。

mysql_query("SET NAMES 'utf8'");

如果上述方法不起作用,请使用utf8编码/解码功能:

<?
$string ="Étuit";
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<?
echo $string; // echo's '?tuit'
echo utf8_encode($string); // echo's 'Étuit'
?>

答案 1 :(得分:9)

可能发生的事情是客户端的默认字符集未设置为UTF-8,因此您将在一个方向或另一个方向上进行转换。这有很多种方式here:

在实例化连接之后,“SET NAMES utf8”的初始化查询通常会解决此问题,但请确保您认为存储的内容(utf8)实际上是存储的内容。如果没有,你可能会有一个清理工作。

答案 2 :(得分:7)

答案 3 :(得分:0)

在代码中的每个连接之前不要打扰SET NAMES,可以使用mysql连接字符串中的参数:

"jdbc:mysql://hostAddress:port/databaseName?characterEncoding=UTF-8"

答案 4 :(得分:0)

这篇文章解释了如何在PHP和MySQL中配置和使用UTF-8。 希望节省您的时间。

A UTF-8 Primer for PHP and MySQL

答案 5 :(得分:0)

这些对我有用:

在HTML标题中:

ENTRYPOINT ["/bin/foo"]

PHP连接后:

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

答案 6 :(得分:0)

当我使用mysqli lib时,我只使用set_charset方法。

error_reporting(E_ALL);

$mysqli = new mysqli('localhost', 'login', "pass", 'database');

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

答案 7 :(得分:0)

我对此也遇到了困难,但是以下内容始终对我有用!在处理数据之前,请确保按如下所示设置编码:

<div class="form-group">
    <label asp-for="InputModel.Title" class="control-label"></label>
    <input asp-for="InputModel.Title" class="form-control" />
    <span asp-validation-for="InputModel.Title" class="text-danger"></span>
</div>