0

我有一个 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 中打印行时,它显示得很好,如下所示:

在此处输入图像描述

但我试图更改为新的 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;

}

当我展示它时,我得到:

在此处输入图像描述

我尝试使用 mysqli_set_charset($conexion, "utf8")

但它具有相同的输出...帮助=(

4

2 回答 2

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");
?>
于 2013-10-17T15:54:04.427 回答
0

检查表中的字符集。如果它不是 utf-8,那么它不会有什么不同,因为它会在吐出之前将字符集转换为它理解它的方式。

将此用作附加信息

于 2013-10-17T16:01:30.340 回答