我完全被我读到的关于字符集的东西搞糊涂了.我正在开发一个接口来存储在mysql数据库中以html格式化的法语文本.我所理解的是,正确显示所有法国特殊字符的安全方法是将它们存储为utf8.所以我创建了一个mysql数据库,为...
我完全被我读到的关于字符集的东西搞糊涂了.我正在开发一个接口来存储在mysql数据库中以html格式化的法语文本.
我所理解的是,正确显示所有法国特殊字符的安全方法是将它们存储为utf8.所以我创建了一个mysql数据库,为数据库和每个表指定了utf8.
我可以通过phpmyadmin看到字符的存储方式完全符合预期.但是通过php输出这些字符会给我带来不稳定的结果:重音字符被无意义的字符所取代.这是为什么 ?
我必须utf8_encode或utf8_decode他们?注意:html页面字符编码设置为utf8.
更一般地说,存储这些数据的安全方法是什么?我应该在保存时结合htmlentities,addslashes和utf8_encode,并在输出时使用stripslashes,html_entity_decode和utf8_decode吗?
解决方法:
MySQL动态执行字符集转换到称为connection charset的东西.您可以使用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');
(注意,charset在浏览器中称为utf-8,在MySQL中称为utf8.)
在大多数情况下,连接字符集和网络字符集是您需要跟踪的唯一内容,因此如果它仍然不起作用,那么可能还有其他错误.尝试一下,通常需要一段时间才能完全理解.
本文标题为:php mysql字符集:存储国际内容的html
- 使用JavaScript实现响应式计数器动画 2022-10-21
- cocos creator游戏实现loading加载页面,游戏启动加载动画 2022-10-29
- ajax实现页面的局部加载 2023-02-23
- Express框架定制路由实例分析 2023-07-09
- 【VUE3.0体验】建路由,加入ElementUI3框架 2023-10-08
- 使用AJAX实现上传文件 2023-02-24
- 关于 extjs:Resolving Dirty Flag in Ext.grid.Panel cell 2022-09-15
- Spring Boot Vue从零开始搭建系统(三):项目前后端分离 2023-10-08
- Vue中使用Ant框架在form表单中使用输入框或数字输入框且用v-decorator取当前值 2023-10-08
- 微信小程序模板与设置WXML实例讲解 2022-10-22