Проблеми с кирилица и MySQL
Зная,че по форумите гъмжи от такива теми, но след като прочетох около 20-30 такива и пак не можах да се справя с проблема реших и аз да пусна тема.
Та проблема ми е следния:
Имам база данни, в която информацията е на кирилица. Извличам тези данни и генерирам html страница чрез perl скрипт. Проблема е, че всичко което е от базата данни излиза на браузара на маймуница (всичко друго си излиза нормално на кирилица). Пробвах какво ли не. Сменях колацията няколко пъти (utf8, cp1251_bulgarian и др), но никакъв резултат.
Страницата и базата данни са качени на чужд сървър. Достъпа ми до тях е чрез phpMyAdmin и нямам достъп до никакви конфигурационни и log файлове на сървъра.
Някой има ли идея как да я подкарам тая кирилица???
Re: Проблеми с кирилица и MySQL
Ако дадеш линкче към страничката, ако покажеш perl кода с който чепкаш, ако пуснеш един дъмп от базата, може и да ти помогне някой.
Re: Проблеми с кирилица и MySQL
да, както каза колегата, недостатъчно инфо даваш, но мога да ти дам някои насоки:
- в какъв тип енкодинг на таблиците е вкарвана кирилицата (има голямо значение, тъй като ако е вкарвана некоректно в латин1, то трябва да я изкарваш по същия начин)
- има енкодинг на базата (сървъра) и на клиента (конекцията), като тази тема е доста добре покрита в документацията
- ако правиш някаква обработка и трансформация на данните под пърл, може би ще трябва да ползваш Encode пакета
- провери за коректен енкодинг на уеб страниците, т.е. да не би да не го сетваш, а в уеб сървъра да е настроен на UTF8 (по подразбиране в apache)
P.S. колацията се отнася единствено за сортирането на данните в даден character set, т.е. работи със character set-а, а не с колацията
Re: Проблеми с кирилица и MySQL
подобен проблем имах с PHP, има едно временно решение, което може да се приложи най-вероятно и с Perl, но там съм "бос" :081:
та, навсякъде след mysql_connect() и mysql_select_db() слагам
mysql_query("SET NAMES CP1251");
или
@mysql_query("SET NAMES CP1251");
или, ако има SET NAMES 'utf8' - да се смени на SET NAMES 'CP1251'
би трябвало по подобен начин да стане и на Perl, но това не е истинско решение на проблема - решението да се ползва подходяща кодировка на базата, таблиците и колацията. установил съм, че колацията най-добре да е cp1251_general_ci
най-добре е да си пазиш бейкъп на базата докато си правиш експерименти с кодировката, този бейкъп трябва естествено да не е омазан с ????? :)
Re: Проблеми с кирилица и MySQL
Благодаря ти Meto.
:ole :ole :ole
Вкарах ред в perl кода подобен на mysql_query("SET NAMES CP1251") за PHP и работата заспа. Интересното е че работи несависимо от колацията и енкодинга, на които са направени таблиците (дори и след голямото омазване за което ти предположи).
Учудващо е как липсата на един ред може да ти скъса нервите и да ти изгуби половин ден.
Re: Проблеми с кирилица и MySQL
ми честито! :)
поне с 5-та версия на MySQL работи, като изкарат 6-та ще му мислим  :))