我做过一些基于PHP/MySQL的web项目,迟早,我总是有字符集问题。
我住在西班牙,我们这里有一些特殊的字符:ç ñ
变量太多了,字符集总是乱糟糟的:
- MySQL数据库排序 PHP/HTML标题
- Web浏览器编码设置 PHP设置
- Apache设置
我想要的是一个关于如何设置一切的基本指南,这样我就不会有这些西班牙语字符的问题。
我有三种方式填充我的HTML输出:- 我用PHP查询MySQL数据库,并回显输出
我直接用HTML写一些字,例如
<p>Qué rábanos pasaría mañana</p>
我用parse_ini_file($file)读取label .ini文件;标签文件看起来像这样:
SORTING_ENTITY = Línea de negociosorting_复数= Líneas de negocioMAIN_ENTITY = Instalaciónmain_复数= Instalaciones
所以当我查看网站时,有时MySQL生成的文本混乱,有时直接HTML混乱,有时一切正常,但来自。ini文件的内容混乱。
有时,我也使用web表单,以便用户输入保存在MySQL中的数据。例如,用户在web表单中写入"Pájaro",而一些不正确的字符则存储在数据库中,如"P}jaros"或类似的字符。
我想有一些指导方针,以便一切都以一种方式设置,即无论我在直接HTML或。ini文件中写什么都显示在网站上,无论用户在web表单中写什么都正确存储,并且在以后读取此数据时也以相同的方式显示。
我不想用这样的东西:
á
ñ
echo utf8_encode($dat);
在HTML中head元素总是包含
<meta charset="UTF-8"/>
在PHP中输出UTF-8字符
header("Content-type: 'text/html'; Charset='UTF-8');
另外,请记住在每个PHP脚本的顶部放置头文件
对于PHP CRUD(创建,读取,更新,删除)使用以下代码
$conObj = new mysqli("", "", "", "");
$conObj->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
试着用这个"查询"函数创建一个类(叫它编码器或任何你喜欢的),所以每当你创建这个类的对象时,这个函数将自动执行,你将不必硬编码它并在每个连接实例/对象下编写。