Специальные символы в PHP / MySQL - PullRequest
19 голосов
/ 11 марта 2009

У меня в базе данных есть слова, содержащие специальный символ (в основном на испанском, например, тильды). В базе данных все сохраняется и отображается правильно с помощью PHPmyAdmin, но когда я получаю данные (используя PHP) и отображаю их в браузере, я получаю странный символ, например «?» с квадратом ... Мне нужно общее исправление, чтобы мне не нужно было каждый раз экранировать каждый символ, а также я мог бы вставить специальные испанские символы из формы PHP в базу данных ...

HTML-код правильный:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Все таблицы и базы данных настроены на utf8_spanish

Персонаж, который я получаю: 100

Есть предложения ???

Спасибо !!!

Ответы [ 13 ]

1 голос
/ 11 марта 2009

Включите кодировку Unicode в вашем HTML.

0 голосов
/ 13 августа 2018

Интересно, этот код не работал для меня:

$link = mysqli_connect('localhost', 'my_user', 'my_password', 'test');
mysqli_set_charset($link, "utf8");
printf("Current character set: %s\n", mysqli_character_set_name($link));
//shows latin1

Однако настройка кодировки внутри условия работает:

if (!mysqli_set_charset($link, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($link));
    exit();
} else {
    printf("Current character set: %s\n", mysqli_character_set_name($link));
    //shows utf8
}

Моя настройка:

$ rpm -qa|grep -E "php|maria"
mariadb-5.5.56-2.el7.x86_64
mariadb-server-5.5.56-2.el7.x86_64
mariadb-libs-5.5.56-2.el7.x86_64
php-pdo-5.4.16-45.el7.x86_64
php-cli-5.4.16-45.el7.x86_64
php-5.4.16-45.el7.x86_64
php-common-5.4.16-45.el7.x86_64
php-mysql-5.4.16-45.el7.x86_64
0 голосов
/ 11 августа 2013

мое решение: сделать все вышеизложенное но я также работаю с блокнотом ++ и файл должен быть сохранен как это: перейти к кодированию во вкладке ману и сохраните файл -> закодируйте в utf8

...