web-dev-qa-db-fra.com

Comment convertir un tableau en php en utf8?

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.

14
user2369594
$utfEncodedArray = array_map("utf8_encode", $inputArray );

Fait le travail et retourne un tableau sérialisé avec des clés numériques (pas un assoc).

29
Max
array_walk(
    $myArray,
    function (&$entry) {
        $entry = iconv('Windows-1250', 'UTF-8', $entry);
    }
);
18
Mark Baker

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");
11
Torsten

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');
                                }
                        );
?>
6
Srihari Goud

array_walk_recursive ( $ array, function (& $ entry) { $ entry = mb_convert_encoding ( $ entry, 'UTF-8' ); });

2
phpdev

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.

0
Vivek Sadh

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;
}
0
Sebastian Viereck