奇怪的图标与德语字母(ä,ü,ö)在mysql导入

时间:2014-04-10 19:19:40

标签: php mysql sql

我有一个问题,在sql数据库中使用德语“Umlaute”“ä,ü,ö,ß”。

有一个php文件,我在其中打开一个sql文件并恢复整个数据库。但每次恢复后,所有德国特殊字母都是错误的(类似“Ÿ”)。 当我查看那里的sql文件时,他们应该按照自己的意愿写入。

这是我的php文件:

// Name of the file
$filename = 'backup.sql';
// MySQL host
$mysql_host = '...';
// MySQL username
$mysql_username = '...';
// MySQL password
$mysql_password = '...';
// Database name
$mysql_database = '...';

//////////////////////////////////////////////////////////////////////////////////////////////

// Connect to MySQL server
mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to     MySQL server: ' . mysql_error());
// Select database
mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());

// Temporary variable, used to store current query
$templine = '';
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
    // Skip it if it's a comment
    if (substr($line, 0, 2) == '--' || $line == '')
    continue;

    // Add this line to the current segment
    $templine .= $line;
    // If it has a semicolon at the end, it's the end of the query
    if (substr(trim($line), -1, 1) == ';')
    {
    // Perform the query
    mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
    // Reset temp variable to empty
    $templine = '';
    }
}

我的SQL文件(backup.sql)如下所示:

-- phpMyAdmin SQL Dump
-- version 3.5.8
-- http://www.phpmyadmin.net
--
-- Host: ...
-- Erstellungszeit: 10. Mai 2013 um 13:57
-- Server Version: 5.5.28
-- PHP-Version: 5.2.17

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Datenbank: `...`
--

--
-- !!!!!!!!!!!!!!!!!  Delete all !!!!!!!!!!!!!!!!!!!!!
--

TRUNCATE TABLE `benutzer`;
TRUNCATE TABLE `nachrichten`;
TRUNCATE TABLE `programme`;
TRUNCATE TABLE `tagebuch`;
TRUNCATE TABLE `therapeuten`;
TRUNCATE TABLE `trainingseinheiten`;

REPLACE INTO `benutzer` (`ID`, `EMail`, `Kennwort`, `passwort`, `salt`, `MandantenArt`, `Vorname`, `Nachname`, `Firma`, `Strasse`, `PLZ`, `Ort`, `Land`, `UID`, `Telefon`, `Fax`, `Webadresse`, `Notizen`, `PT_ID`, `Erinnerung`, `Onlinebetreut`, `Therapeut`, `Diagnose`, `Erstellungsdatum`, `Letzter_Login`, `Deleted`, `Status`) VALUES
...
(74, 'demopat@physio-visor.at', 'yes', '...', '...', 'pa', 'Max', 'Mustermann', '', 'Landstraße 11', '6020', 'Innsbruck', 'Österreich', '', '0123 456 789', '', '', '', '69', 'nein', 'ja', 'keiner zugeteilt', '', '2013-06-11 19:56:21', '2013-06-11 20:01:14', 0, 0);

这只是sql文件的快捷方式。但你可以在那里看到“ß”和“Ö”。

在我的MSQL数据库中,表格都是utf8_general_ci。

你能告诉我,你的这封德国特别信件在网站上不对吗?

1 个答案:

答案 0 :(得分:2)

好像你没有将你的mysql连接设置为utf-8:

$link = mysql_connect($mysql_host, $mysql_username, $mysql_password) 
        or die('Error connecting to     MySQL server: ' . mysql_error());
mysql_query("SET character_set_results=utf8", $link);
mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());
mysql_query("set names 'utf8'",$link);