Exportation de données de MySQL vers Excel avec l'encodage UTF-8
J'ai une base de données mysql ligne avec utf8_general_ci
classement, quand je l'exporter au format csv, au lieu de corriger les caractères utf-8-je obtenir Ć…ā€¦I
etc, comment faire excel comprendre le codage UTF-8 voici mon code:
$conn = mysql_connect('localhost', 'root', 'asdfggh') or die(mysql_error());
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");
mysql_select_db('table_name', $conn) or die(mysql_error($conn));
$query = sprintf('SELECT * FROM sudraba_birzs');
$result = mysql_query($query, $conn) or die(mysql_error($conn));
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="'.date("d-m-Y_H:i") . '.csv'.'"');
echo "\xef\xbb\xbf";
$row = mysql_fetch_assoc($result);
if ($row) {
echocsv(array_keys($row));
}
while ($row) {
echocsv($row);
$row = mysql_fetch_assoc($result);
}
function echocsv($fields)
{
$separator = '';
foreach ($fields as $field) {
if (preg_match('/\\r|\\n|,|"/', $field)) {
$field = '"' . str_replace('"', '""', $field) . '"';
}
echo $separator . $field;
$separator = ',';
}
echo "\r\n";
}
Comment l'exporter pour obtenir tous les caractères s'affichent correctement (faire Excel comprendre utf-8) et de maintenir la disposition de table de trop(avec des lignes et des colonnes)
Vous pouvez essayer de définir un codage UTF-8 BOM-tête, mais vous pouvez également découvrir l'écriture d'un véritable fichier Excel (BIFF .xls ou OfficeOpenXML .xlsx) qui permettra d'éliminer ces problèmes en fournissant Excel avec un fichier dans son format d'origine
OriginalL'auteur bukowski | 2013-06-14
Vous devez vous connecter pour publier un commentaire.
De la production de CSV, qui est en fait un fichier de texte brut. Il n'y a aucun moyen de spécifier le codage de l'information dans ce type de fichiers. La plupart des éditeurs de texte, mettre en œuvre (le meilleur ou le pire) de codage de l'auto-détection. Excel n'est pas. Excel va tout simplement assumer ANSI lorsque vous cliquez-droit sur un fichier CSV. (Vous devez utiliser le menu "Ouvrir" pour être invité sur encodage).
Votre seule option qui reste (à part le passage à un autre format de sortie) est la conversion des données au format ANSI, soit avec mb_convert_encoding() ou avec iconv(). Mais maintenant vous avez un autre problème: ANSI n'est pas un encodage réel, il signifie "quelle que soit l'encodage est défini dans mon ordinateur Windows". Vous devez d'abord trouver le typique encodage de la plupart de vos utilisateurs. La plupart du temps dépend du pays. Par exemple, de nombreux pays de l'Europe de l'Ouest utiliser Win-1252.
OriginalL'auteur Álvaro González
J'ai eu le même problème (problème commun dans les bases de données de langue espagnole). J'ai écrit cela, et il a travaillé:
C'est une Classe qui se connecte à la base de données et les fonctions qui vont faire que vous voulez à l'aide de mysqli et PHP. Dans ce cas, l'appel de cette classe (require ou include), il suffit d'utiliser la "downloadCsv()" fonction.
Comme un exemple, ce serait le "class.php" fichier:
Après la création de la "class.php" fichier, dans cet exemple, l'utilisation de cette fonction sur "download.php" fichier:
Après le téléchargement, ouvrez le fichier avec MS Excel.
J'espère que cela vous aidera, je pense que je l'ai écrit bien, je ne me sentais pas à l'aise avec le texte et le code de champ.
OriginalL'auteur manuelmatas
Comme un autre et beaucoup sipmler solution, vous pouvez l'essayer, je l'utilise depuis quelques années maintenant, et jamais eu de problème avec ça.
db_connect.php
Fonction d'exportation
Vous pouvez appeler la fonction comme:
OriginalL'auteur mee