2015-05-30 3 views
2

Моя главная проблема прямо сейчас в том, что я не могу отображать «ä, ü, ö» на моей веб-странице, отображаться как , когда я показываю свой сценарий с «эхом», они кажутся нормальными , когда я запускаю его из моей html-страницы, я получаю .Невозможно отобразить немецкий umlaut

После того как я попробовал несколько вещей, которые я прочитал по этой теме, я не смог найти решение моей проблемы.

Я читаю файл .xls с .xls в php reader. Я получаю данные из таких полей:

function getMenueMonday($connection) { 
    $menu = ""; 
    $startrow = 8; 
    $endrow = 16; 
    $col1 = 3; 
    for ($i = $startrow; $i < $endrow; $i++) { 
     $menu .= $connection->sheets[0]["cells"][$i][$col1] . "<br>"; 
    } 
    return $menu; } 

Это работает отлично. Затем я сохраняю все эти возвращаемые значения в массиве. Я запишу их, чтобы сохранить их в базе данных mysql.

for ($i = 0; $i < 5; $i++) { 
    insertMenue(changeAttr($menues[$i]), $days[$i]); 
} 

метод я использую, чтобы изменить буквы выглядит следующим образом:

function changeAttr($content) { 
    $search = array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü"); 
    $replace = array("&auml;", "&ouml;", "&uuml;", "ss", "&Auml;", "&Ouml;", "&Uuml;"); 
    $contentrep = str_replace($search, $replace, $content); 
    return $contentrep; 
} 

В таблице моей базе данных, они до сих пор спасаются как «ö, ü». Таблица сама по себе находится в utf8_bin. Я попробовал это в заголовке HTML-файла:

<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<html lang="de"> 

, а также это в файле я использую, чтобы прочитать дб.

header('Content-Type: text/html; charset=utf-8'); 

С помощью следующего кода я получаю этот выход:

foreach($menues as $r){ 
    echo urlencode($r); 
} 

"Saisonfr% FCchte", где он должен быть "Saisonfrüchte".

Есть ли точка, где я пропускаю кодировку или что-то особенно не так?

ответ

6

Ваше соединение должно быть известно о кодировке, которую вы используете, в противном случае произойдет неявное преобразование набора символов. Чтобы достичь этого, вы можете сделать:

SET NAMES utf8 

Пожалуйста, обратитесь к this blog post на шаг за шагом объяснение общих ошибок кодирования при использовании MySQL и PHP.

Если все говорят «utf-8», нет необходимости избегать символов в вашем HTML, используя ссылки на именованные сущности. Это может считаться плохой практикой.

+0

Спасибо! Просто 'array (PDO :: MYSQL_ATTR_INIT_COMMAND =>" SET NAMES utf8 ")' в файле подключения отлично работает! –

+0

'PDO: $ db = new PDO ('dblib: host = host; dbname = db; charset = UTF-8', $ user, $ pwd); ' –

0

Хорошо, теперь на самом деле все после того, как «ä, ö, ü» не записывается в базу данных ... Но если бы один из них был в db, он будет отображаться правильно.

+0

Возможно, потому что ваши данные повреждены. Пожалуйста, прочитайте бот-блог, о котором я говорил ранее, это поможет вам решить эту проблему дальше. –

+0

Только с помощью 'array (PDO :: MYSQL_ATTR_INIT_COMMAND =>" SET NAMES utf8 ")' в соединении, чтобы его считывать –

Смежные вопросы