MySQL cyrrilic encoding on Windows

11 отговора 299 прегледа
#1

MySQL cyrrilic encoding on Windows

MySQL4.0.15-Windows2k
Използувах параметрите по подразбиране и направих няколко таблици с полета от тип varchar, които трябва да съхраняват кирилица.
Когато извеждам резултата от заявките с MySQL-client-а няма проблеми, но като използувам PHP се изобразяват е&jJ$...(енкодинга на страницата си е Win1251).
Какво трябва да се направи без да се прекомпилира MySQL, така че символите да се съхраняват и извеждат коректно?
TIA.

Отговор
в отговор на h #2

Re: MySQL cyrrilic encoding on Windows

Как показваш полетата от базата в PHP-то - директно или ги прекарваш през htmlentities? Ако е второто пробвай htmlspecialchars - върши същата работа и не прецаква кирилицата.

Отговор
в отговор на h #3

Re: MySQL cyrrilic encoding on Windows

spored men problema ne e v mysql-a a v web server
iamsh tam edni default encodingi mislia beshe

inak za mysql-a
dobavi
default-character-set=cp1251 v my.cfn v [mysqld] sekciata

-----------------
signatura
Отговор
в отговор на h #4

Re: Гуру, Люлин 7

прекомпилиране на апач

-----------------------
гърбавия, ковчег ще го изправи
Отговор
в отговор на an_ #5

Re: MySQL cyrrilic encoding on Windows

Странното е че събирам данни не само от MySQL, но и от SQLServer и Access и с тях няма никакви проблеми с кирилицата. Не виждам защо Apache-то да не се разбира с MySQL относно кирилицата.

Мисля си 4е проблема е в MySQL - добавих default-encoding да е cp1251, рестартирах услугата MySQL, ама май трябва да изтрия базата и да създам наново всички таблици (а те са пълни) .

Отговор
в отговор на h #6

Re: MySQL cyrrilic encoding on Windows

Просто няма как да е в MySQL-а както и ти сам си го написал. След като от команден ред нямаш проблеми а само от PHP-то нещата са ясни. Различна настройка на клиентите.

>добавих default-encoding да е cp1251

Такова живитно няма. Опцията се казва
default-character-set = cp1251

Между другото я добави не само в секция [mysqld] а и в секция [client]
и провери дали PHP-то я чете изобщо.

> рестартирах услугата MySQL, ама май трябва да изтрия базата и да > създам наново всички таблици (а те са пълни) .

Това пък откъде го измисли? Трябва да преиндексираш т.е. да направиш ALTER TABLE .... DROP INDEX<всички индекси>, ADD INDEX ...

А още по-лесно е да направиш REPAIR. mysqlcheck -A може доста да ти упрости живота в този случай.

Освен ако не си 4.1 където даже няма нужда да рестартираш

salle.online.bg/sig
Отговор
в отговор на salle #7

Re: MySQL cyrrilic encoding on Windows

Благодаря за съветите, но резултат няма .
default-character-set = cp1251 и за [mysqld] и за [client].

myisamchk -dvv mytable_name
връща->>cp1251.

PHP.ini ->> default_charset= "cp-1251"

Apache.conf ->>AddLanguage bg .bg
->>AddDefaultCharset cp-1251

Отговор
в отговор на h #8

Re: MySQL cyrrilic encoding on Windows

Остава да ни покажеш проблемия php код за да хвърлиме по едно око.

Отговор
в отговор на Borko #9

Re: MySQL cyrrilic encoding on Windows

Съвсем случайно локализирах проблема.
Изглежда че браузъра (IE5) (или пък Web-server-a) сменя енкодинга на страницата, въпреки 4е съм дал страницата да е с
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="bg">

Ако се смени от IE encoding-a да е Cyrilic(DOS) - всичко си се вижда ОК.
За Netscape работи при Cyrilic (CP-866).

Header() ли да ползвам - някой имал ли е такъв проблем?

Отговор
в отговор на h #10

Re: MySQL cyrrilic encoding on Windows

Kakwi li ne encodingi mu slagah w stranicata - ne iska i ne iska.

Maj zabrawih da kava kombinaciqta:
Apache2.0.43 - PHP4.3.2 - MySQL4.0.15 - Win2KAdvancedServer
Phpinfo() kazwa 4e PHP-to polzwa MySQLClientAPI-3.23.59 - ottuk da ne idwa problema?!

Отговор
в отговор на h #11

Solution

Проблема се оказа много тъп - тъй като таблицата дето е с кирилски колони имаше само няколко реда - аз ги вкарах ръчно с MySQL-клиента от DOS-промпта - затова и като сменя с браузера енкодинга да е Cyrillic(DOS) - тогава работи. Но не работи с друг енкодинг - това bug в MySQL-client ли е? Според мен би трябвало да работи.

Сега като попълних таблицата със заявка от PHP - няма проблеми.

Благодаря за съветите на всички!
GL&GT.

Отговор
в отговор на h #12

Re: Solution

Явно при вкарване на данните от DOS си ползвл българската DOS кирилица, а не windows-1251, затова в таблицата са били с неподходяш за windows приложенията формат.

Отговор