@skvoshiz

Почему меняется кодировка PHP?

Здравствуйте, столкнулся с не понятной для меня проблемой:
Я делаю POST запрос на сервер к файлу test.php с двумя параметрами : info1, info2
info1 - это данные для MySQL
info2 - просто string с русскими буквами = "Привет"
Сам файл test.php
<?php
require_once('data.php');
require 'main_info.php';
$site= $_POST['info1']; //site
$var1 = $_POST['info2']; //var1
if (!empty($site))
{	
	$link = mysql_connect($MySQL_hostname,$MySQL_username,$MySQL_password);
	mysql_select_db($MySQL_databasename);
	$query = "SELECT * FROM $MySQL_table  WHERE `Site` = '$site'"; 
	$result = mysql_query($query);
	$row = mysql_fetch_array($result);
	$var2 = $row['Title'];
	echo $var1 .";" .$var2;
}
else
{
	echo "ERR";
}
?>

$row['Title'] - в таблице эта ячейка занята текстом "Здарова"
И в итоге у меня ответ от этого файла идет такой:
Привет;Здарова
Но если вместо echo $var1 .";" .$var2; будет просто echo $var1; то ответ:
Привет
В чем тут проблема? Как сделать, чтоб ответ приходил в нормальной кодировке , или что это вообще такое?
  • Вопрос задан
  • 638 просмотров
Решения вопроса 1
Проблема, очевидно, в том, что у вас смешиваются две кодировки. Браузер обычно пытается определить кодировку автоматически, поэтому у вас во втором случае корректно определяется UTF-8 (где "Привет"), а в первом случае одеяло на себя перетягивает другая кодировка (вероятно 1251), и символы, закодированные в UTF-8 отображаются криво. Строка "Здарова" приходит вам в той кодировке, которая проставлена для текущего подключения к БД, и она, видимо, не UTF-8. Проставьте utf8, например, таким способом. Или поменяйте дефолтовую кодировку в настройках mysqld.
Кстати, переходите на PDO, если изучаете доступ к данным в PHP, т.к. этот способ считается устаревшим.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
isqua
@isqua
Научу HTML, CSS, JS, BEM и Git
В какой кодировке страница отдаётся пользователю? Подозреваю, что браузер отправляет данные в той же кодировке, что и получает. Какая кодировка в базе данных? Какая в настройках PHP? Рекомендую везде выставить UTF-8, тогда проблем не будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы