Проблем с кирилицата - mysql

DownFall

Registered
Накратко - реших да пренапиша целия си сайт - профилактична оптимизация, често го правя :) Използвам UTF-8 и навсякъде кирилицата си я разчита без проблем, всичко е перфектно. Записите на кирилица от mysql обаче ги изкарва с разни иероглифи..

Написах си набързо код, с който да конвертирам данните
<?php
mysql_select_db("website", mysql_connect("localhost", "root", ""));

$char1 = "utf8";
$char2 = "utf8_general_ci";

$q1 = mysql_query("SHOW TABLES");
while($r1 = mysql_fetch_array($q1))
{
mysql_query("ALTER TABLE `".$r1[0]."` DEFAULT CHARACTER SET $char1") or die (mysql_error());
$q2 = mysql_query("SHOW FULL FIELDS FROM `".$r1[0]."`") or die (mysql_error());
while($r2 = mysql_fetch_assoc($q2))
{
if($r2["Collation"]!=NULL && $r2["Collation"]!=$char2)
{
mysql_query("ALTER TABLE `".$r1[0]."` CHANGE `".$r2["Field"]."` `".$r2["Field"]."` ".$r2["Type"]." CHARACTER SET $char1 COLLATE $char2");
echo $r2["Field"]." ".$r2["Type"]."&nbsp=> ".$r1[0]."<br />";
}
}
}
?>

Уви, не помогна.. Как мога да реша проблема?
Благодаря предварително.

ПП. Ще изпреваря коментарите - искам да използвам UTF-8, не windows-1251 например.
 
ОК де, щом ти прави проблем, значи очевидно не можеш да използваш UTF8 ;) Защо не пробваш да си оставиш базата данни utf8_general_ci а в заявката да го направиш:

$char1 = "cp1251";
$char2 = "cp1251_general_ci";

Разбирам те, че ти се ползва UTF8, ама като не става... :D Какво правим? :twisted:
 
В краен случай ще променя encodinga, ясно е.. Но все пак трябва да има причина за да не става.. Аз просто се опитвам да я открия и по възможност да я отстраня :), явно обаче сам не мога да се справя и за това пиша тук..

Не направих темата, за да питам как да си изведа кирилицата от mysql.. Това мога да го направя. Направих темата, за да питам как да направя записите съвместими с utf8 :)
 
Файловете са ти на утф-8 но провери ги с нотпад++ и ги конвертираи до утф-8 без БОМ
Виж си базата данни дали като цяло е зададена да е utf8_general_ci щото отделните базиданни може да са утф8 но като цяло да е примерно уникоде.
Аз съм имал същия проблем на локала и се мъчих цифра време докато се усетя че настройките на сървара са уникоде.

Успех!
 
Нещо не се разбрахме явно :) Кой говори нещо за файловете? Ползвам си utf8 за тях, всичко е ок - нямам проблем. Проблема БЕШЕ единствено с кирилицата, която е в mysql.

Казвам беше, защото преди няколко минутки успях и сам да го оправя :)
Все пак мерси за помощта на всички.
 
DownFall каза:
Нещо не се разбрахме явно :) Кой говори нещо за файловете? Ползвам си utf8 за тях, всичко е ок - нямам проблем. Проблема БЕШЕ единствено с кирилицата, която е в mysql.

Казвам беше, защото преди няколко минутки успях и сам да го оправя :)
Все пак мерси за помощта на всички.

Къде беше проблема?
 

Back
Горе