我完全被我读到的关于字符集的东西搞糊涂了.我正在开发一个接口来存储在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
基础教程推荐
- LocalStorage记住用户和密码功能 2022-09-16
- HTML基础详解(下) 2022-09-21
- js保留两位小数最简单的实现方法 2023-07-09
- 如何手写Ajax实现异步刷新 2023-02-14
- CSS打造色块标题标识 2022-10-16
- node以及npm版本不对应出错的完美解决方法 2023-07-10
- Vue基础案例:01-购物车:购买图书 2023-10-08
- 结合ES6 编写 JavaScript 设计模式中的结构型模式 2022-08-30
- js如何去除数组中的empty undefined空项 2022-10-22
- HTML中table表格拆分合并(colspan、rowspan) 2022-09-20