Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.1.28-rc-community MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.05 sec)
mysql> SHOW VARIABLES LIKE '%collat%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
mysql> CREATE DATABASE man;
Query OK, 1 row affected (0.02 sec)
mysql> USE man;
Database changed
mysql> CREATE TABLE people (
-> name VARBINARY(64) );
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO people VALUES ('Валик');
Query OK, 1 row affected (0.03 sec)
mysql> SELECT * FROM people;
+-------+
| name |
+-------+
| Валик |
+-------+
1 row in set (0.00 sec)
mysql>
Создал PHP скрипт для вывода данных с базы (создавал в Notepad ++, предварительно установил кодировку UTF-8 (без BOOM) ) :
<html>
<head>
<title> Вывод из базы </title>
</head>
<body>
<h1> Вывод из базы </h1>
<?php
$conn = mysql_connect("localhost","root","");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
mysql_select_db("man", $conn);
$sq1 = "SELECT * FROM people";
$result = mysql_query($sq1, $conn);
print "<table border=1>\n";
print "<tr>\n";
while ($field = mysql_fetch_field($result)) {
print "<th>$field->name</th>\n";
}
print "</tr>\n\n";
while ($row = mysql_fetch_assoc($result)) {
print "<tr>\n";
foreach ($row as $col=>$val) {
print " <td>$val</td>\n";
}
print "</tr>\n\n";
}
print "</table>\n";
?>
</body>
</html>
Установлен сервер Apache 2.2 на этом же компьютере. При открытии в браузере показывает следующее :
а�б�аВаОаД аИаЗ аБаАаЗб�
name
� ЋЈЊ
При чем в браузере устанавливается Кириллица(ISO-8859-5) кодировка. Когда в браузере меняю вручную кодировку на Юникод (UTF-8) выдаёт следующее:
Вывод из базы
name
�����
Когда меняю вручную на Кириллица/Россия (CP-866) :
╨Т╤Л╨▓╨╛╨┤ ╨╕╨╖ ╨▒╨░╨╖╤Л
name
Валик
ЛЮДИ ДОБРЫЕ!! Ну сил просто нет уже, 4-й день мучаюсь с этими кодировками. Помогите пожалуйста!
Спустя 15 минут, 7 секунд (24.01.2010 - 16:22) Gabriel написал(а):
<html>
<head>
<title> Вывод из базы </title>
</head>
<body>
файл должен быть в кодировке utf8, также нужно поставить либо метатег который будет говорить браузеру, что тут утф8, либо послать заголовок с той же целью, а еще лучше и то и друге.
Спустя 4 часа, 46 минут, 45 секунд (24.01.2010 - 21:09) Meteor_IP написал(а):
Цитата (Gabriel @ 24.01.2010 - 13:22) |
<html> файл должен быть в кодировке utf8, также нужно поставить либо метатег который будет говорить браузеру, что тут утф8, либо послать заголовок с той же целью, а еще лучше и то и друге. |
СПС. Установил в <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
и в PHP <?php header( "Content-Type: text/html; charset=utf8" );
Браузер при запуске установил UTF-8, НО!!! данные с базы всё равно выглядят так:
Вывод из базы
name
�����
Спустя 3 минуты, 5 секунд (24.01.2010 - 21:12) Bezdna написал(а):
Спустя 21 минута, 23 секунды (24.01.2010 - 21:33) Meteor_IP написал(а):
Цитата (Bezdna @ 24.01.2010 - 18:12) |
http://phpforum.ru/index.php?showtopic=17150 |
Спасибо. Но если ты просмотрел мой PHP-скрипт, то там прописаны строки:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
На сколько я знаю, это одно и тоже, что и mysql_query("SET NAMES 'utf8'");
Пробовал и так и так, эффект тот же самый...
Везде пишут одно и тоже пропиши mysql_query("SET NAMES 'utf8'"); и всё будет нормально, но почему у меня не нормально??? Я полностью выложил все свои действия. Где я и что сделал не так???
Пожалуйста подскажите где ошибка
Спустя 4 часа, 44 минуты, 10 секунд (25.01.2010 - 02:17) anonymouse написал(а):
Тоже самое словил - + не могу все файлы переделать в UTF-8 without BOM
Пол движка нормально работает другая половина глучит...
Самое что странное .
1. Та часть что не глючит - в ПХПмйАдмине - не виден русский
2. Та часть гед глучит - в БД вставить не могу русс. и ничего с ним делать... но в ПХП-Админе вижу нормально текст отчетлево...
Уже запарился...
Пол движка нормально работает другая половина глучит...
Самое что странное .
1. Та часть что не глючит - в ПХПмйАдмине - не виден русский
2. Та часть гед глучит - в БД вставить не могу русс. и ничего с ним делать... но в ПХП-Админе вижу нормально текст отчетлево...
Уже запарился...
Спустя 1 час, 7 минут, 31 секунда (25.01.2010 - 03:25) dr_Lev написал(а):
У меня тоже такая проблема была... везде стояло UTF... и тестовые данные тоже через консоль вводил... решения проблемы так и не нашел... Но когда ввел данные из пыха, все стало на свои места...
Мои догадки, что всему виной "Язык и региональные настройки" виндовза...
Мои догадки, что всему виной "Язык и региональные настройки" виндовза...
Спустя 1 час, 11 минут, 33 секунды (25.01.2010 - 04:36) Gabriel написал(а):
тьфу тьфу тьфу у меня с такими делами пока что все гладко
Спустя 8 часов, 37 минут, 9 секунд (25.01.2010 - 13:13) anonymouse написал(а):
Я нашел проблему.
ПИ***ЗДЕЦ ПРОСТИТЕ МЕНЯ НО БОЛЬШЕГО БРЕДА С УТФ я не видел.
Не знаю оправдывает ли он себя после этого....
Если ты пользуешься УТФ - то очень многие фукций строковый не работают правильно.
На пример у меня была проблема в strtolower.
Он парсил мне не как простой стринг... и из за этого вылезали на половине сайта каракули.
ПИ***ЗДЕЦ ПРОСТИТЕ МЕНЯ НО БОЛЬШЕГО БРЕДА С УТФ я не видел.
Не знаю оправдывает ли он себя после этого....
Если ты пользуешься УТФ - то очень многие фукций строковый не работают правильно.
На пример у меня была проблема в strtolower.
Он парсил мне не как простой стринг... и из за этого вылезали на половине сайта каракули.
Цитата |
Проблема собственно в том, что юникодовский текст занимает больше байт, чем количество символов. Поэтому обычный substr и т.п. могут обрезать текст по служебному байту, что приводит к отображению браузером знака вопроса в конце текста. Все это не очень красиво. |
Вот вам и ответ на ПОЛТЕРГЕЙСТ !
Так что проблему нужно искать на много глубже ... хз убил вчера столько времени что сегодня когда встал и посмотрел на все это... так и хочется послать куда-то это все....
Спустя 21 минута, 46 секунд (25.01.2010 - 13:35) twin написал(а):
Это не полтергейст а элементарное незнание матчасти.
Для работы с многобайтными кодировками нужно пользоваться своими функциями, которые собраны в библиотеку mb.
Так что не
Для работы с многобайтными кодировками нужно пользоваться своими функциями, которые собраны в библиотеку mb.
Так что не
Цитата |
На пример у меня была проблема в strtolower |
а
Цитата |
На пример у меня была проблема в том, что я не знал, что нужно использовать mb_strtolower |
Спустя 1 час, 38 минут, 16 секунд (25.01.2010 - 15:14) anonymouse написал(а):
twin
Согласен!!! Нечего мне возразить тебе....
Только вот... не только я об этом не знал...
Век живи век учись!
Согласен!!! Нечего мне возразить тебе....
Только вот... не только я об этом не знал...
Век живи век учись!
Спустя 4 дня, 22 часа, 43 минуты, 32 секунды (30.01.2010 - 13:57) Guest222 написал(а):
В итоге то, как решить эту проблему? можно хотя бы немножко подробнее? у меня тоже самое, бьюсь второй день.
Спустя 8 минут, 51 секунда (30.01.2010 - 14:06) twin написал(а):
А где проблема то?
Спустя 3 часа, 23 минуты, 58 секунд (30.01.2010 - 17:30) Guest222 написал(а):
Цитата |
А где проблема то? |
В базе данных mysql русские символы лежат в cp1251
'character_set_client', 'cp1251'
'character_set_connection', 'cp1251'
'character_set_database', 'cp1251'
'character_set_filesystem', 'binary'
'character_set_results', 'cp1251'
'character_set_server', 'cp1251'
'character_set_system', 'utf8'
'character_sets_dir', 'c:\Program Files (x86)\MySQL\MySQL Server\share\charsets\'
при получении строки в php
<?php
$server = 'localhost:3306';
$user = 'root';
$password = '123456';
$dblink = mysql_pconnect($server, $user, $password);
$database = 'poligon';
$selected = mysql_select_db($database, $dblink);
$sql= "SET NAMES cp1251";
$qry = mysql_query($sql, $dblink);
$sql = 'SELECT * FROM table1';
$qry = mysql_query($sql, $dblink);
$row = mysql_fetch_array($qry, MYSQL_NUM);
echo "Имя: " . $row[0];
?>
результат (кодировка браузера стоит cp1251):
Ставлю кодировку браузера utf-8: