Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Кодировка страниц

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу понять, какую лучше выбрать кодировку страниц?
 
windows-1251 или utf-8
 
с windows-1251 при выводе информации, мне нужно менять для неё кодировку, чтоб она была не в виде иероглифов.
а если с utf-8 то всё проще...
 
вот хотел спросить, как лучше сделать сидеть с windows-1251 или с utf-8?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:55 18-07-2012
Vload

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросик непростой. А какая кодировка установлена на сервере по умолчанию?

Всего записей: 18 | Зарегистр. 25-07-2010 | Отправлено: 23:18 18-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vload
Ну сервер как-бы у меня, и по началу, при создание .php файлов, стоит windows-1251
 
вот много читал про utf-8 много пишут что хорошая.
например:
 
цытата:

Код:
В UTF-8 гораздо больше количество символов возможно представить, чем в 1251. Кодировка 1251 однобайтовая, т.е. представить можно только 255 символов. Для кирилицы впрочем этого вполне достаточно, поэтому однобайтовые кодировки так долго и использовались. Символ в кодировке UTF-8 может кодироваться аж 6 байтами (пока используется только 4 и больше не планируется). Для русского языка, например, символ занимает 2 байта.
 
Теперь о плюсах и минусах.
Плюсы:
- UTF-8 совместима с однобайтовой кодировкой ASCII, т.е. символы ASCII кодируются в 1 байт, таким образом множество англоязычного ПО в переделке не нуждается
- UTF-8 позволяет работать одновременно с несколькими языками, т.е. выдавать тексты, в которых используются символы разных алфавитов и даже иероглифы. С использованием кодировки 1251 это невозможно.
- использование UTF-8 позволяет отказаться от кодовых таблиц, трансляций символов и всех прочих извращений, что были ранее с однобайтовыми кодировками.
- UTF-8 и в Африке остаётся таким. Нет кучи кодировок для одного и того же языка, как это было ранее для русского: cp1251, cp866, koi8r, iso8859-5
Минусы:
- Существенно усложнилась логика работы программ, работающих со строками в формате UTF-8. Теперь программам надо учитывать, что один байт в строке не равен одному символу и как следствие все стандартные функции работы со строками во многих популярных языках программирования, которые ранее ориентировались на однобайтные символы, теперь работают неправильно! Нужны специальные библиотеки, поддерживающие UTF-8. На разбор UTF-8 последовательностей тратится драгоценное процессорное время и поэтому программы будут объективно работать медленее (хотя по современным мощностям это практически не заметно).
- Увеличился размер текстов. Поскольку теперь символы занимают вместо одного байта несколько (до 4-х), то во столько раз и увеличивается размер текстов.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:20 18-07-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
вот хотел спросить, как лучше сделать сидеть с windows-1251 или с utf-8?

если у вас только содержимое на русском/английском, то первый вариант.  
второй если подразумевается много языков

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:23 18-07-2012
Vload

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если есть доступ к .htaccess, то лучше utf-8, по крайней мере хоть не будет проблем с буквой Ё

Всего записей: 18 | Зарегистр. 25-07-2010 | Отправлено: 23:26 18-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
но русский язык с БД, мне приходи делать так:
 

Код:
$reason = iconv("utf-8", "CP1251", $reason);

 
тоесть менять кодировку...
у меня получается таких строк, больше 20-30 на 1н файл.
 
Vload
да, есть)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:52 18-07-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
у меня получается таких строк, больше 20-30 на 1н файл.  

делать зачем?  
если страницы выдаются в какой то кодировке, то и базу лучше держать в той же кодировке

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:57 18-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
просто база у меня UTF-8 Unicode (utf8)
потому-что с ней работает не только сайт, а и игровой сервер, он нуждается только в utf8

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 15:20 19-07-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
ну тогда делайте и сайт в уникоде..  лучше когда не париться с перекодировкой.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:23 19-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Хорошо, спасибо.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:56 19-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
теперь другая проблема.
 
У меня на сайте, я переводил одну строчку с помощью функции iconv() с utf-8 в CP1251 кодировку.
При переходе на кодировку utf-8 - я убираю строчку.
 
Но у меня есть 2рое поле в БД, где есть имя пользователя. У многих пользователей, там много разных символов...
Например ‘ ` и другие.
 
С кодировкой CP1251 я использовал функцию htmlentities() и всё показывало. теперь когда есть кодировка utf-8, на местах тех 2х символов - квадратик (иероглиф) если убрать htmlentities() получается Г
приходиться делать функцию htmlentities() и iconv() переводить с CP1251 в utf-8.
 
Как можно ещё сделать те символы доступными?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 17:04 20-07-2012 | Исправлено: Sutar, 17:07 20-07-2012
ubian



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sutar
Вот так попробуй:

Код:
 
htmlentities($string, ENT_QUOTES, 'UTF-8');
 

PS: http://www.php.su/functions/?htmlentities

Всего записей: 623 | Зарегистр. 22-07-2011 | Отправлено: 20:49 20-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ubian
пробовал,
должно быть так:
   
получилось:
   
 
только не

Код:
htmlentities($string, ENT_QUOTES, 'UTF-8');

 
а (потому-что там получаются Г символы...)
 

Код:
htmlentities($string, ENT_QUOTES, 'CP1251');


Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 01:04 21-07-2012 | Исправлено: Sutar, 01:06 21-07-2012
ubian



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sutar
Ты какую кодировку экранируешь и в какую выводишь?

Всего записей: 623 | Зарегистр. 22-07-2011 | Отправлено: 11:31 21-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
База данных в Utf-8
Страницы в Utf-8
Текст должен быть в CP1251 (там показывает полный US текст...)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 13:58 21-07-2012
ubian



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sutar
Сначала:

Код:
 
htmlentities($string, ENT_QUOTES, 'UTF-8');
 

Потом перекодируем в CP1251

Код:
 
iconv("utf-8", "CP1251", $reason);
 


Всего записей: 623 | Зарегистр. 22-07-2011 | Отправлено: 21:01 21-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ubian
ну я переходил на utf-8 в качестве сокращение кода, а именно функций iconv()
и получается что они снова есть...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:34 21-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Блин, что-то вообще не получается ничего.
Не получается сделать многоязычный сайт....
 
мне нужно чтоб поддерживало ВСЕ символы и языки.
тут всё норм... а у меня что-то не хочет((
у меня база в utf8_unicode_ci мб какуето другую кодировку нужно?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 14:28 22-07-2012 | Исправлено: Sutar, 14:29 22-07-2012
ubian



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sutar
База обычно utf8_general_ci (или что-то типо того, но с генералом).
Определись в какой кодировке страница. Вообще все перевести в UTF8 и не будет проблем никаких. Сейчас почти везде на *NIX серверах используют utf8.

Всего записей: 623 | Зарегистр. 22-07-2011 | Отправлено: 18:19 22-07-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ubian
я об этом думаю, перевести всё. Но при выводе с БД текст становиться иероглифами.
 
напримере я вам кидал скрины...
 
Вот моя:
 

Код:
default-character-set=utf8
default-collation=utf8_general_ci

 
просто данные в БД вносятся в кодировке CP1251, это можеть быть проблемой?
 
просто я только-что внес данные в БД с кодировкай страницы utf-8 и отображает корректно.
А данные внесены с сервера (игрового) плохо.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:26 22-07-2012 | Исправлено: Sutar, 20:32 22-07-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » Кодировка страниц


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru