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

Jea*_*ois 12 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" />
Run Code Online (Sandbox Code Playgroud)

注意:当我单击表单上的"保存"时,将使用jquery ajax方法发布数据.

Ped*_*ito 10

尝试在使用DB之前设置客户端编码.

mysql_query("SET NAMES 'utf8'");
Run Code Online (Sandbox Code Playgroud)

如果以上不起作用,请使用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'
?>
Run Code Online (Sandbox Code Playgroud)

  • 但是字符串已经用 UTF-8 编码了,至少它应该是这样的!当你在我的个人资料中时,请点击我写的关于编码的长篇大论文章,其中更详细地介绍了这一点。 (2认同)
  • @deceze你太过个人采取这种功能,并且在所有正义的贬低中都是冲洗的. (2认同)
  • 对于初学者来说,不要那么居高临下。而不是“......你知道这个功能实际上是做什么的吗?” 你可以说“根据 PHP 文档,这个函数实际上......你可以复制这种行为......” (2认同)

gvi*_*iew 9

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

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


Ali*_*guy 7

看一下utf8_encode()utf8_decode().另请参阅多字节字符串函数.

  • 抱歉,但除非你能**解释** `utf8_encode` 实际上做了什么以及为什么这比 @gview 的解决方案更好,否则我必须给你 -1。 (2认同)
  • 尝试使用`utf8_encode`/`utf8_decode`将文本“エンコード”保存到您的UTF-8数据库中(应该能够处理它,对吧?)并告诉我它是否仍然有效。 (2认同)
  • 谢谢deceze,我正确配置了我的数据库.你说得对.做一天正确支付的东西:) (2认同)