Задавайте вопросы, мы ответим
Вы не зашли.
Знаю, что это не совсем 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
Неактивен