我有一个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”)
但它有相同的输出... help =(
答案 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作为附加信息