2013-03-22 2 views
3

У меня есть São Tomé and Príncipe, хранящийся в базе данных MySQL.Как правильно отображать неповторяющиеся символы, хранящиеся в базе данных MySQL

Он отображает на моей веб-странице, как S�o Tom� and Pr�ncipe

Есть в любом случае, чтобы отобразить его должным образом прямо из базы данных?

Мой MySQL тип является MyISAM и сверка является utf8_general_ci

Моя веб-страница кодировка <meta charset="utf-8">

Тип поля устанавливается в varchar(30) и поля сортировки такой же, как таблицы utf8_general_ci

PHP ФУНКЦИОНАЛЬНЫЕ ИСПЫТАНИЯ

utf8_decode() конвертировать Ted символы в S?o Tom? and Pr?ncipe htmlspecialchars_decode() преобразованных символов в S�o Tom� and Pr�ncipe html_entity_decode() преобразуются в символах S�o Tom� and Pr�ncipe quoted_printable_decode() преобразуются в символах S�o Tom� and Pr�ncipe htmlentities() возвращаются пустого результат

получил его на работу БЛАГОДАРЯ @SAEVEN

Ран это прямо перед моим запрос SELECT

mysqli_query($GLOBALS['db_link'], "SET NAMES 'utf8'");

+1

Какой у вас тип кодировки? –

+1

См. Также [Абсолютный минимум. Каждый разработчик программного обеспечения абсолютно уверен, должен знать о юникоде и наборах символов] (http://www.joelonsoftware.com/articles/Unicode.html) – mario

+0

см. Мой измененный вопрос @Fred –

ответ

2

Может быть, вам нужно указать сортировку пространства имен на уровне соединения?

Я предполагаю, что вы рассмотрели основы, у вас есть кодировка как utf8 в вашей разметке HTML.

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

'SET NAMES utf8'

например, если вы используете PDO

// do your regular connection logic whatever it is 
$dbc = new PDO(....); 
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$dbc->query('SET NAMES utf8'); 

// run your queries beneath 
.... 

или можете использовать сокращенный

new PDO(
    'mysql:host=mysql.example.com;dbname=awesome_db', 
    "username", 
    "password", 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") 
); 

Какой бы DBAL вы ни использовали, этот запрос будет работать. Просто запустите его в том же соединении, которое вы используете, чтобы вытащить ваши данные, прежде чем потянуть его (нужно только сделать один раз)

+0

спасибо @saeven - вы помогли мне решить мою проблему. Я изменил свой вопрос с помощью используемого вами решения (я код процедурно) –

+0

Рад, что я мог бы помочь. Обычная проблема, которая может быть довольно неясной, если вы раньше не ударили головой о стену. ;) Спасибо за голосование! – Saeven

+0

спасибо за помощь ... –

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