Използване на UTF-8 в HTML, PHP, MySQL

sizif

Registered
Здравейте!

Ще използвам енкодинг UTF-8 за първи път и съм малко несигурен.

Сайтът ще е на български и английски. Какви стойности на UTF-8 трябва да използвам:
1) в мета-тага на страницата
2) при запис на php-файловете (ще пиша скриптовете на локална машина под уиндоус, после ще ги пренасям на хоста)
3) при задаване на енкодинг на таблиците в БД

И допълнително: какви проблеми мога да очаквам при работа с UTF-8, по отношение на браузъри, сетване / извличане на стойности от куки, използване на рнр-функции третиращи символния набор, ГЕТ-стойности и т.н.?

Моля за сериозни отговори!

Благодаря предварително!
 
1.) <meta http-equiv="Content-Type"
content="text/htm; CHARSET=UTF-8">


2.) Ако се редактират файлове и се променя CHARSET трябва да се зададе съответната кодировка на редактора.

3.) utf8_unicode_ci

Единственият проблем, който аз знам, е че валидаторите леко не го харесват.
 
sizif каза:
Здравейте!

Ще използвам енкодинг UTF-8 за първи път и съм малко несигурен.

Сайтът ще е на български и английски. Какви стойности на UTF-8 трябва да използвам:
1) в мета-тага на страницата
2) при запис на php-файловете (ще пиша скриптовете на локална машина под уиндоус, после ще ги пренасям на хоста)
3) при задаване на енкодинг на таблиците в БД

И допълнително: какви проблеми мога да очаквам при работа с UTF-8, по отношение на браузъри, сетване / извличане на стойности от куки, използване на рнр-функции третиращи символния набор, ГЕТ-стойности и т.н.?

Моля за сериозни отговори!

Благодаря предварително!

Ако сайтът е на БГ и ЕН само може да позлваш всякакъв енкодинг.
Обаче ако има и други езици то тогава най удачно е да ползваш UTF-8 .

Проблемите ще дойдат от базата данни но ако се оправиш след това няма да имаш проблеми дори и китайски да сложиш.

Примерно аз когато имам да слагам над 2 езика (примерно последно бяха 6 езика между които руски, ромънски, арабски и унгарски)
ползвам UTF-8.

Базата данни трябва да ти е с УТФ-8.
Полетата където пишеш трябва да са УТФ-8 и при писане в базатад данни
трябва да сетваш УТФ-8.

Абе пробвай и ако имаш проблеми пиши.
 
И в двата случая си работи добре, но аз си предпочитам cp1251, много по-малко проблеми съм имал с него от колкото UTF8. Но както каза admin UTF8 може да се ползва с всякакви изчанчени езици. Но специално за кирилица и латиница cp1251 е най-удачното решение
 
3.) utf8_unicode_ci

Не е ли само за кирилица?

За чистата латиница няма проблеми даже на най-идиотския енкодинг, но ако потребител въведе някой от специфичните символи, характерни за някои езици като френски, немски, чешки и т.н. спецификацията на енкодинга не е без значение.

Моля за още отговори.

специално за кирилица и латиница cp1251 е най-удачното решение

Добре, звучи разумно, но пак същия въпрос: какъв точно cp1251?

admin,

seга ти видях мнението. Най-близо си до това, което питам. Точно това искам да направя - да си гарантирам, че какъвто и символ да въведе потребителя, той ще бъде съхранен правилно.

Само че в БД има спецификации на UTF-8. Коя е най-удачна?
Сега ми хрумва - как е решен този проблем при phpBB-форумите?
 
Ползва се utf8_bin за да позволи всякакви езици
За cp1251 се ползва cp1251_bulgarian_ci или latin1_swedish_ci(колкото и да е странно... на някой хостове само така става).
А в phpBB сега като си гледам базата полетата са cp1251_bulgarian_ci...
 
Мале...

Ползваш utf8_unicode_ci за MySQL, мета тага ти е UTF-8, не използваш notepad++ при писане на utf8 документи, добавя празен символ който не го виждаш в началото на документа. и точно utf8_unicode_ci е за абсолютно всички езици.

задължитено слагаш и след конекцията едно mysql_query("SET CHARACTER SET utf8"); за да покажеш, че използваш utf-8 кодировка.

Пиши ми на ЛС.
 
jooorooo каза:
Мале...

Ползваш utf8_unicode_ci за MySQL, мета тага ти е UTF-8, не използваш notepad++ при писане на utf8 документи, добавя празен символ който не го виждаш в началото на документа. и точно utf8_unicode_ci е за абсолютно всички езици.

задължитено слагаш и след конекцията едно mysql_query("SET CHARACTER SET utf8"); за да покажеш, че използваш utf-8 кодировка.

Пиши ми на ЛС.

Ако ползва notepad++ просто трябва да зададе кодировката на файла да е UTF-8 without BOM тогава няма да има никакви проблеми. За mysql_query("SET CHARACTER SET utf8"); не мисля, че е задължително, поради факта, че всичко му е чарнато на UTF8.
 
Благодаря на всички, които взехте отношение по темата!
Точката отиде при jooorooo.
 
jooorooo каза:
Мале...

Ползваш utf8_unicode_ci за MySQL, мета тага ти е UTF-8, не използваш notepad++ при писане на utf8 документи, добавя празен символ който не го виждаш в началото на документа. и точно utf8_unicode_ci е за абсолютно всички езици.

задължитено слагаш и след конекцията едно mysql_query("SET CHARACTER SET utf8"); за да покажеш, че използваш utf-8 кодировка.

Пиши ми на ЛС.

Да jooorooo. Благодаря за разяснението.
Точно така трябва да е но само да добавя, че не само полетата в таблиците да ги правите с този енкодинг но ни самата база данни да я направите на utf-8.

Някой хостинги в БГ слагат автоматично при създаване на базата данни да е 1251 и това може да ви скъса нервите при определени ситуации.
 

Горе