2013-03-31 3 views
2

У меня есть база данных, которая содержит много имен, включая иностранные имена, которые имеют специальные символы, например. ŽigićПоказать все специальные символы html/php

Когда вторя эти имена некоторых персонажей показывают в виде вопросительных знаков, где, как некоторые шоу, потому что я использую кодировку ISO-8859-1

Например, когда я повторяю имя Žigić из базы данных, по-видимому Пример:

Žigi?

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

<meta charset="iso-8859-1"> 

Я пробовал UTF-8, но это просто печатает имя как это:

�igi? 

Это полный код, который я пытаюсь использовать:

$getPlayerStats = $db->query("SELECT * FROM `playerstats` WHERE `playerid` = '".$_GET['id']."'"); 

echo '<meta charset="iso-8859-1"><table border="1"> 
<tr> 
<td>First Name</td> 
<td>Second Name</td> 

</tr>'; 

while ($playerStats = mysqli_fetch_array($getPlayerStats))//Loop it. 
{ 




    echo '<tr>'; 
    echo '<td>'.$playerStats['firstname'].'</td>'; 
    echo '<td>'.$playerStats['lastname'].'</td>'; 

    echo '</tr>'; 
} 
echo '</table>'; 

Обратите внимание, что эта проблема не только для 1 символа или одного имени, база данных имен содержит сотни имен.

Может ли кто-нибудь помочь мне, спасибо.

+0

Это может помочь. Http://stackoverflow.com/questions/7311462/saving-serbian-latin-characters-in-database – Dinesh

+0

Вы пробовали utf8_encode ($ string)? –

+0

Когда я пробую это, он печатает имя Žigić как ŽŽigi? – Koala

ответ

0

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

или, возможно, загрузите свой db и откройте файл sql с этими программами и выполните тот же процесс, возможно, он покажет символы .

2

Для того, чтобы поддерживать равномерное кодирование UTF-8 на протяжении всего проекта, попробовать

$pdo->exec('set names utf8'); 

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

"mysql:host=$host;dbname=$db;charset=utf8" 

и удалить эту часть:

<meta charset="iso-8859-1"> 

Убедитесь, что en кодирования для вашей страницы является UTF-8, можно добавить следующее к головному тегу:

<meta charset="utf-8"> 

Edit: Видя ваше использование $db заставил меня сделать ложное предположение о том, что вы используете PDO. Как указано в другом ответе на ваш вопрос, вы должны использовать mysqli_set_charset, чтобы установить кодировку для вашего соединения с MySQL. Сортировка для вашей базы данных не должна иметь значения для кодировки, в которой вы получаете свои данные, если у вас есть требуемые символы.

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

1

Кроме того, необходимо установить базу данных < -> PHP транспортного кодирования:

mysqli_set_charset("utf8"); 

прежде чем делать какие-либо вопросы. Сохраните объявление кодировки страницы как UTF-8, так как теперь ваши данные будут UTF-8.

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