Не могу никак продуплить. В бэкэнде одной малоизвестной CMS используется utf8, чарсеты везде где только можно стоят utf-8. База просто кричит всеми фибрами полей, что она utf-8.
Текст выводится как и положено. Все хорошо, полная идилия. Одно беспокоит, почему именно в базе именно через phpmyadmin все данные в базе хранятся вот в таком виде ÐовоÑти?
Кто даст внятный ответ?
Чур не смеяться.
Отсутствует
phpmyadmin какой ветки, 2.х или 3.х? В настройках
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: UTF-8_Unicode_ci
?
UPD: В исходнике страницы что пишет,
1: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
?
CharsetDisable On в .htaccess?
Отсутствует
Px написал:
phpmyadmin какой ветки, 2.х или 3.х? В настройках
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: UTF-8_Unicode_ci?
UPD: В исходнике страницы что пишет,Код:
1: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
?
CharsetDisable On в .htaccess?
Мне профессиональный танцор нужен
пхпмайадмин 3.2.2
Collation и прочее - utf-8
Чарсеты стоят.
CharsetDisable On в .htaccess приводит к Internal Server Error
Это все фигня, все работает. В админке и на сайте все в порядке. Почему в базе не та кодировка?
Отсутствует
s0rr0w написал:
CharsetDisable On в .htaccess приводит к Internal Server Error
mod_charset не установлен в апаче...
s0rr0w написал:
Почему в базе не та кодировка?
Потому что пишет не в той?
Вон в базе форума общая кодировка utf8, страницы в ней же, а таблицы форума cp1251_general_ci и в коде layer-а mysql_query("SET NAMES cp1251");
Всё фигня, вспомнил, где я это видел - у тебя где-то при записи в базу лишнее преобразование в/из utf8
Отсутствует
Px написал:
Всё фигня, вспомнил, где я это видел - у тебя где-то при записи в базу лишнее преобразование в/из utf8
Код преобразования?
Отсутствует
s0rr0w написал:
Код преобразования?
Кхм, исходник у тебя, откуда я могу знать?
В примере в первом сообщении осмысленный текст написан, или фигня типа "Рэовопэти"?
Отсутствует
Если залогиниться на сервер и до выбора базы вывести таблицу Server variables and settings, что показывает (верхние 20 строк)?
Версия MyAdmin стоит AllLanguages или English?
Отсутствует
Установил себе последнюю версию MyAdmin AllLanguages (до этого стояла 2), проблему воссоздать не могу.
Отсутствует
Судя по ÐовоÑÑ‚Ð, при отображении 2-х байтный UTF-8 воспринялся как 1-но байтная кобировка (скорее всего cp1251), потому и отображает такую хрень. Нужно искать где иъян начиная с того, как они лежат в базе. Т.е. в какой кодировке лежат сами данные, а не всякие там SET NAMES.
Отсутствует
Кодировки, фигли
----(UTF8->ISO-8859-1)----> КодиÑ?овки, фигли
Отсутствует
Это UTF-8 в UTF-8 Причём индексируется оно правильно и происходит даже тогда, когда всё везде в UTF-8, так что сразу и не заметишь
База думает что ты ей даёшь не UTF-8 и преобразовывает его в UTF-8, а на обратом пути — соответственно наоборот.
Надо ему "SET NAMES utf8" после коннекта говорить, тогда всё будет правильно. Кстати у меня даже где-то скрипт был, который заполненную таким образом базу в нормальный вид приводит, если надо будет...
Отсутствует
Дык вроде ж
В бэкэнде одной малоизвестной CMS используется utf8
Или ты думаешь, что бэкэнд глючный или неправильно настроен?
Отсутствует
LOUIE написал:
Это UTF-8 в UTF-8
Причём индексируется оно правильно и происходит даже тогда, когда всё везде в UTF-8, так что сразу и не заметишь
База думает что ты ей даёшь не UTF-8 и преобразовывает его в UTF-8, а на обратом пути — соответственно наоборот.
Надо ему "SET NAMES utf8" после коннекта говорить, тогда всё будет правильно. Кстати у меня даже где-то скрипт был, который заполненную таким образом базу в нормальный вид приводит, если надо будет...
Фак май майнд!
Долбаные фашисты! Ну надо ж было задефайнить переменную в uppercase....
Нашел таки где это косячило!
Делись скриптом, буду конвертить.
Спасибо огромное! Настояший шаман!
Отсутствует
s0rr0w написал:
Настояший шаман!
дык и бубен у него есть...
Отсутствует
Обещанный наколенный скрипт.
Если запустить просто так, то он только показывает, что он сделает с базой, а если запустить ?do=go, то он это сделает!
1: // chande mysql stored data encoding from default to specified 2: $config = array( 3: 'host' => 'localhost', 4: 'username' => 'ыть', 5: 'password' => 'ыть', 6: 'database' => 'ыть', 7: 'charset' => 'utf8' 8: ); 9: 10: // variables 11: $tables = array(); 12: $items = array(); 13: @$do = $_GET['do']; 14: 15: // mysql_set_charset legacy definition 16: if (!function_exists('mysql_set_charset')) { 17: function mysql_set_charset($charset,$dbh) { 18: return mysql_query("set names $charset",$dbh); 19: } 20: } 21: 22: echo '<h3>Connecting...</h3>'; 23: mysql_connect($config['host'],$config['username'],$config['password']); 24: echo mysql_error(); 25: mysql_select_db($config['database']); 26: echo mysql_error(); 27: 28: echo '<h3>Getting tables...</h3>'; 29: $result = mysql_list_tables($config['database']); 30: echo mysql_error(); 31: while ($row = mysql_fetch_row($result)) $tables[] = $row[0]; 32: echo implode(', ', $tables); 33: 34: echo '<h3>Select...</h3>'; 35: foreach($tables as $tablename) { 36: $items[$tablename] = array(); 37: $result = mysql_query("SELECT * FROM $tablename"); 38: echo mysql_error(); 39: while ($row = mysql_fetch_assoc($result)) $items[$tablename][] = $row; 40: } 41: 42: echo '<h3>Set charset...</h3>'; 43: mysql_set_charset($config['charset']); 44: echo mysql_error(); 45: 46: echo '<h3>Update...</h3>'; 47: // loop tables 48: mysql_query("START TRANSACTION"); 49: foreach($items as $tablename=>$table) { 50: echo "<h4>$tablename (" . count($table) . ")</h4>"; 51: // loop rows 52: foreach ($table as $row) { 53: $id = $row['id']; 54: echo "$id "; 55: 56: $values = array(); 57: // loop fields 58: foreach ($row as $field=>$value) { 59: if($value && !is_numeric($value)) { 60: $value = mysql_real_escape_string($value); 61: $values[] = "$field='$value'"; 62: } 63: } 64: 65: // build query 66: $set = implode(',',$values); 67: $query = "UPDATE $tablename SET $set WHERE id=$id"; 68: 69: // test or go 70: if($do=='go') { 71: mysql_query($query); 72: if($error = mysql_error()) echo "$error <hr/>"; 73: } else { 74: echo "<textarea rows=3 cols=85>$query</textarea><br/>"; 75: } 76: } 77: } 78: mysql_query("COMMIT");
Отсутствует
Отсутствует
Могли б и у ся в админке пообсуждать всеравно меж собой общаетесь
Отсутствует
SokraT(HO}I{) написал:
Могли б и у ся в админке пообсуждать
всеравно меж собой общаетесь
Не указывай что нам делать, и мы не будем говорить тебе, куда идти.
Отсутствует