J'ai un tableau:
require_once ('config.php');
require_once ('php/Db.class.php');
require_once ('php/Top.class.php');
echo "db";
$db = new Db(DB_CUSTOM);
$db->connect();
$res = $db->getResult("select first 1 * from reklamacje");
print_r($res);
Je veux le convertir de Windows-1250 à UTF-8, parce que j'ai des caractères comme
Meilleur.
$utfEncodedArray = array_map("utf8_encode", $inputArray );
Fait le travail et retourne un tableau sérialisé avec des clés numériques (pas un assoc).
array_walk(
$myArray,
function (&$entry) {
$entry = iconv('Windows-1250', 'UTF-8', $entry);
}
);
Dans le cas d’une connexion PDO, les éléments suivants peuvent aider, mais la base de données doit être en UTF-8:
//Connect
$db = new PDO(
'mysql:Host=localhost;dbname=database_name;', 'dbuser', 'dbpassword',
array('charset'=>'utf8')
);
$db->query("SET CHARACTER SET utf8");
U peut utiliser quelque chose comme ça
<?php
array_walk_recursive(
$array, function (&$value) {
$value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
}
);
?>
array_walk_recursive ( $ array, function (& $ entry) { $ entry = mb_convert_encoding ( $ entry, 'UTF-8' ); });
Vous pouvez utiliser la fonction string utf8_encode( string $data )
pour accomplir ce que vous voulez. C'est pour une seule chaîne. Vous pouvez écrire votre propre fonction à l'aide de laquelle vous pouvez convertir un tableau à l'aide de la fonction utf8_encode.
Une fonction plus générale pour encoder un tableau est:
/**
* also for multidemensional arrays
*
* @param array $array
* @param string $sourceEncoding
* @param string $destinationEncoding
*
* @return array
*/
function encodeArray(array $array, string $sourceEncoding, string $destinationEncoding = 'UTF-8'): array
{
if($sourceEncoding === $destinationEncoding){
return $array;
}
array_walk_recursive($array,
function(&$array) use ($sourceEncoding, $destinationEncoding) {
$array = mb_convert_encoding($array, $destinationEncoding, $sourceEncoding);
}
);
return $array;
}