Проблем с БГ писането на phpbb2.0.23

cMexypaHko

Registered
Хора, ползвам услугите на tophost.bg .Те не ползвали там някакъв код или незнам какво точно и ми казаха за да мога да пиша на български във форума и ми дадоха линк към едни глупости:

Желая да ползвам UTF-8 за кодировка на сайта ми, но Вашия сървър работи с Windows-1251. Има ли решение на проблема?

Да, можете да настроите кодировката по подразбиране за целия си сайт чрез .htaccess файл. Добавете в него следното:

php_value default_charset utf-8
AddDefaultCharset utf-8


Добавих го, но сега пък излизат някъвки йероглифи. След това пък ми пратиха ето това съобщение:
Подобни ситуации, в които вместо коректните знаци MySQL връща грешни такива се получават при "разминаване" в кодировките.
Да речем, че имаме база данни "baza", която е с енкодинг "cp1251". MySQL по подразбиране работи с UTF-8, така че щом извикаме каквито и да било данни от базата данни "baza", те ще са с грешни знаци. Това се случва поради факта, че MySQL интерпретира знаците като UTF-8 такива, докато те реално са cp1251. Резултатът е нечетими знаци.

За да се избегнат подобни ситуации, в MySQL е добавена възможно да укажем на MySQL как да интерпретатира базата данни, с която той оперира. Това става със заявка "set names `enkoding`". Ако дадем пример с горния случай:

$query = mysql_query("set names `cp1251`");

По този начин MySQL ще знае, че в текущата връзка трябва да работи с базата данни използвайки знаци от cp1251, а не от UTF-8, както той прави по принцип.

Обърнете внимание, че е препоръчително тази заявка да се изпълнява веднага след като се свържете с базата данни. Валидността на това тълкувание на MySQL е само за текущата MySQL връзка.

Моля ви кажете какво да направя за да излиза форума нормално. Благодаря ви !
 
Хората от хоста са почти прави.

Да речем че имаш това

HTML --------- PHP -------- MySQL
UTF-8 -------- UTF-8 ------ CP1251 (windows-1251)

В този случай може да се оправи енкодинга с едно SET NAMES UTF8 . След тази заявка mysql би трябвало да ти изплюе информацията като utf8 нещо че в нея данните са cp1251. Обаче ако го няма това то ти праща информацията в енкодинга на таблицата (cp1251).

Най-добре си е обаче ако нямаш още много данни в таблицата да си я направиш utf8 (ако имаш много данни не пробвай, защото може да си прецакаш данните). Имай в предвид, че след такива конвертирания най-често данните стават неизползваеми (не можеш да ги вземеш в никакъв енкодинг). За това ако си пипал чарсета на базата данни си добави нови записи след конвертирането и пробвай с тях. За сега пробвай с mysql_query("SET NAMES UTF8"); веднага след връзката към базата.
 

Back
Горе