没有用htmlspecialchars()和使用mysqli显示的重音符号

时间:2013-10-17 15:47:38

标签: php html mysql

我有一个MySQL数据库,其中包含西班牙语单词,例如像andreá一样的重音符号。

我正在使用它并且显示正常:

<?php
include "../BD/conexion.php";
mysql_query('SET NAMES utf8');

class Faq
{

public $pregunta;
public $respuesta;


public function __construct($pregunta,$respuesta)
{
    $this->pregunta    = $pregunta;
    $this->respuesta  = $respuesta;

}

public static function get()
{
    $rows = array();
    $res  = mysql_query('SELECT * FROM Faq');

    while ($row = mysql_fetch_array($res)) {
        $rows[] = $row;
    }
    function filter(&$value) {
      $value = htmlspecialchars($value,  ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
    }
    array_walk_recursive($rows, "filter");
    return $rows;
}

当我在html中打印行时,它显示得很好:

enter image description here

但是我试图改变这样的新mysqli_函数:

<?php
$conexion = mysqli_connect("localhost","root","","prueba2");
mysqli_query($conexion,'SET NAMES utf8');
mysqli_close($conexion);

class Faq
{

public $pregunta;
public $respuesta;


public function __construct($pregunta,$respuesta)
{
    $this->pregunta    = $pregunta;
    $this->respuesta  = $respuesta;

}

public static function get()
{
    $conexion = mysqli_connect("localhost","root","","prueba2");
    $rows = array();
    $res  = mysqli_query($conexion,'SELECT * FROM Faq');

    while ($row = mysqli_fetch_array($res)) {
        $rows[] = $row;
    }
    function filter(&$value) {
          $value = htmlspecialchars($value,  ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
    }

    array_walk_recursive($rows, "filter");
    return $rows;
    mysqli_close($conexion);
    return $rows;

}

当我展示它时,我得到了:

enter image description here

我试着用      mysqli_set_charset($ conexion,“utf8”)

但它有相同的输出... help =(

2 个答案:

答案 0 :(得分:1)

我相信如果您在执行任何其他查询之前运行查询来设置名称,它应该可以工作。虽然在黑暗中有点射击!

如下所示:http://php.net/manual/en/mysqli.query.php#44707

<?php
    $mysqli = new mysqli("localhost","root","","prueba2");
    $mysqli->query("SET NAMES 'utf8'");
    $q = $mysqli->query("SELECT * FROM Faq");
?>

答案 1 :(得分:0)

检查表格中的字符集。如果它不是utf-8,那么它就不会有所作为,因为它会将字符集转换为它如何理解它然后再吐出来。

Use this作为附加信息