一尘不染

php mysql字符集:存储国际内容的html

mysql

我对字符集所读的内容完全感到困惑。我正在开发一个接口来存储mysql数据库中以html格式格式化的法语文本。

我了解的是,正确显示所有法语特殊字符的安全方法是将它们存储为utf8。因此,我为数据库和每个表创建了一个utf8的mysql数据库。我可以通过phpmyadmin看到字符完全按照预期的方式存储。但是通过php输出这些字符会产生不稳定的结果:重音字符被无意义的字符替换。这是为什么

我必须对它们进行utf8_encode或utf8_decode吗?注意:html页面字符编码设置为utf8。

更普遍地讲,存储此数据的安全方法是什么?保存时是否应该结合htmlentities,addslashes和utf8_encode,输出时是否应该结合反斜杠,html_entity_decode和utf8_decode?


阅读 287

收藏
2020-05-17

共1个答案

一尘不染

MySQL快速执行字符集转换为称为连接字符集连接。您可以使用sql语句指定此字符集

SET NAMES utf8

或使用特定的API函数,例如mysql_set_charset()

mysql_set_charset("utf8", $conn);

如果正确完成此操作,则无需使用utf8_encode()和utf8_decode()之类的函数。

您还必须确保浏览器使用相同的编码。通常使用简单的标头完成此操作:

header('Content-type: text/html;charset=utf-8');

(请注意,字符集在浏览器中称为 utf-8 ,而在MySQL中称为 utf8 。)

在大多数情况下,仅需记住连接字​​符集和Web字符集,因此,如果仍然不起作用,则可能是您做错了其他事情。尝试尝试一下,通常需要一段时间才能完全理解。

2020-05-17