![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Знаю, что это не совсем mysql (кажется), но может подскажете хоть куда копать. В общем суть проблемы скажет вот такой запрос, выполненный через phpmyadmin:
SELECT
codeorgch,
CONCAT(codeorgch,' + ',n_org)
FROM tbl
LIMIT 5Результат будет примерно такой:
codeorgch CONCAT(codeorgch,' + ',n_org) ФЦ �� + 96 ФЦ �� + 96 ФЦ �� + 96 ФЦ �� + 96
Видно, что во втором столбце полетела кодировка, вот только непонятно почему. Если в функцию concat третьим аргументом поставить например число (или вовсе убрать его) - то все нормально:
codeorgch CONCAT(codeorgch,' + ',11) ФЦ ФЦ + 11 ФЦ ФЦ + 11 ФЦ ФЦ + 11 ФЦ ФЦ + 11
Также хорошо видно, что без CONCAT() значения столбцов показываются корректно, причем любые.
В других клиентах проблем нет, например когда я такой же скрипт выполню и покажу парсером - то всё в порядке. Куда копнуть бы, а? ![]()
Отредактированно Shopen (08.06.2009 13:09:32)
Неактивен

Прикольно. А если явно заставить вывести в правильной кодировке (CONVERT ..)?
Неактивен
Ага - помогает, вот так показывает праильно -
SELECT
codeorgch,
CONVERT(CONCAT(codeorgch,' + ',n_org) USING cp1251)
FROM tbl
LIMIT 5но это же ненормальная ситуация, имхо. Еще замечено, что если БД копирую к себе на localhost к денверу, то его коробочный pma всё показывает как надо. Т.е. где то в pma что-то "чуть-чуть" недонастроено в плане кодировок, а что - непонятно
Неактивен
В общем для потомков ![]()
Я так и не понял почему так происходит, точнее почему такой странный результат в PMA, хотя в других клиентах этого нет. Но лечится просто - нужно либо использовать CONVERT как указано выше, либо, что по видимому правильнее, использовать CAST для не текстовых столбцов (n_org - int):
SELECT
codeorgch,
CONCAT(codeorgch,' + ',CAST(n_org AS CHAR))
FROM tbl
LIMIT 5Неактивен