如何在PHP / MySQL中获得charset?

时间:2015-05-23 18:34:42

标签: php mysql character-encoding

我做了很少的基于PHP / MySQL的Web项目,迟早,我总是有字符集问题。

我住在西班牙,我们在这里有一些特殊的角色:çñáéíóó和ú

有很多变量,charset总是搞砸了:

  • MySQL数据库归类
  • PHP / HTML标题
  • 网络浏览器编码设置
  • PHP设置
  • Apache设置

我想要的是如何设置所有内容的基本指南,以便我不会遇到这些西班牙语字符的问题。

我填充HTML输出的方式有三种:

  • 我用PHP查询MySQL数据库,并回显输出。
  • 我直接用HTML写了一些单词,例如

    <p>Qué rábanos pasaría mañana</p>
    
  • 我用parse_ini_file($ file)读取了labels.ini文件;标签文件类似于:

    SORTING_ENTITY =Líneadenegocio SORTING_PLURAL =Líneasdenegocio MAIN_ENTITY =Instalación MAIN_PLURAL = Instalaciones

因此,当我查看网站时,有时从MySQL生成的文本会混乱,有时直接HTML会搞砸,有时候一切都会好,但来自.ini文件的内容会搞砸。< / p>

有时,我使用Web表单,以便用户输入保存在MySQL中的数据。用户在Web表单中编写“Pájaro”,并且一些不正确的字符存储在数据库中,如“P} jaros”或类似的东西。

我希望有一些指导原则,以便所有内容都设置为无论我在直接HTML或.ini文件中编写的内容都显示在网站中,并且无论用户在Web表单中写入的内容是否正确存储,以后读取这些数据并用PHP回显时也会以相同的方式显示。

我不想使用像:

这样的东西
&aacute;
&ntilde;
echo  utf8_encode($dat);  

1 个答案:

答案 0 :(得分:0)

在HTML头元素中始终包含

<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'");

尝试用这个“查询”函数创建一个类(称之为编码器或任何你喜欢的东西),所以无论何时你创建这个类的对象,这个函数都会自动执行,你不必硬编码它。在每个连接实例/对象下写入。