Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: перевелся полностью на UTF-8
 
 автор: sidPR   (17.04.2007 в 23:58)   письмо автору
 
 

перекодировал все доки в UTF-8 все файлы php и т.п. базу и данные в ней.. захожу на сайт вижу каракули... пока не выберу естественно кодировку нужную

вопрос как сделать так чтобы она автоматом сама определялась как Utf-8 ?

   
 
 автор: sidPR   (18.04.2007 в 00:02)   письмо автору
 
   для: sidPR   (17.04.2007 в 23:58)
 

поставил <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> не помагло :(

   
 
 автор: yuk   (18.04.2007 в 00:26)   письмо автору
 
   для: sidPR   (18.04.2007 в 00:02)
 

А можно адресок сайта?

   
 
 автор: sidPR   (18.04.2007 в 01:48)   письмо автору
 
   для: yuk   (18.04.2007 в 00:26)
 

Я поменял в конфиге сервера

default_mimetype = "text/html"
default_charset = "UTF-8"

и все встало на круги своя ... правильный ход ?

   
 
 автор: yuk   (18.04.2007 в 10:26)   письмо автору
 
   для: sidPR   (18.04.2007 в 01:48)
 

Я думаю, ход не очень правильный. Теперь у тебя не будут правильно отображаться остальные кодировки. Поскольку если явно указать в конфиге default_charset = "UTF-8", то PHP будет игнорировать, какая там кодировка указана в Content-type. Чтобы он этого не делал, поставь в конфиге

default_mimetype = "text/html" 
;default_charset = "UTF-8" т.е. эту строку можно вообще убрать.

И еще прочитал, что такое вот начинается с версии 4.0b4

   
 
 автор: sidPR   (18.04.2007 в 12:32)   письмо автору
 
   для: yuk   (18.04.2007 в 10:26)
 

если я коментирую то он у меня выводит ероглифы а если не коментирую все как надо ... и в базу пишется как надо

   
 
 автор: yuk   (18.04.2007 в 14:08)   письмо автору
 
   для: sidPR   (18.04.2007 в 12:32)
 

Чесно говоря, затрудняюсь ответить. Тогда можно оставить, как ты сделал, но я так понимаю, что это все пока у тебя на локале? Ведь на хостинге далеко не всегда сможешь вписать что-то свое в конфиг. Попробуй реально разместить одну страничку где-нибудь, с блоком <meta>. Или прикрепи одну страничку в сообщение, чтоб пару слов там было.

   
 
 автор: sidPR   (18.04.2007 в 14:49)   письмо автору
 
   для: yuk   (18.04.2007 в 14:08)
 

Ну вообще то я перекодировал все файлы PHP, HTML, JS Перекодировал базу с Utf-8 general ci а также все таблици и поля... все это на хостинге .. загрузил документ в хеадером UTF-8 но в конфиге не правил у меня ероглифы пошли а загрузил в конфиг эту строку все вывелось как надо :) меня больше волнует правильны были ли мои действия или я чтото не так сделал

   
 
 автор: yuk   (18.04.2007 в 15:16)   письмо автору
 
   для: sidPR   (18.04.2007 в 14:49)
 

Я так думаю, что раз все работает, все устраивает - значит правильно. Любую задачу можно решить разными способами. Вспомнил анекдот:
Маленький сын спрашивает у папы-программиста:
- Папа, а почему солнышко каждое утро появляется здесь, а вечером прячется там?
- А ты проверял? - Проверял. - Работает? - Работает. - Каждый день работает? - Каждый день.
- Тогда сынок, ничего не трогай, ничего не меняй!!!

   
 
 автор: 12345   (18.04.2007 в 16:04)   письмо автору
 
   для: yuk   (18.04.2007 в 15:16)
 

Так что, на бумаге теперь тоже в UTF-8 пишешь?

   
 
 автор: sidPR   (18.04.2007 в 16:35)   письмо автору
 
   для: 12345   (18.04.2007 в 16:04)
 

12345 непонял вопроса... :))

   
 
 автор: 12345   (18.04.2007 в 20:50)   письмо автору
 
   для: sidPR   (18.04.2007 в 16:35)
 

( > тема: перевелся полностью на UTF-8 )

   
 
 автор: sidPR   (19.04.2007 в 02:09)   письмо автору
 
   для: 12345   (18.04.2007 в 20:50)
 

Кстати по поводу непонятия если в документе будет другая кодировка...


$new = substr($news['news'], 0, 200);    

Вот эта фигня в конец обрезанной строки вставляет символ далеко не из UTF-8 .. при этом на выводе не отображается как надо и при просмотре исходного текста корежит кодировку если коментирую то все ок ....

вот как избавится от подобного рода багов... или все обязанно быть в одной кодировке и тп ?

   
 
 автор: yuk   (19.04.2007 в 09:47)   письмо автору
 
   для: sidPR   (19.04.2007 в 02:09)
 

Может, есть функция какая-нибудь, которая перекодировывала бы строку?

   
 
 автор: sidPR   (19.04.2007 в 22:31)   письмо автору
 
   для: yuk   (19.04.2007 в 09:47)
 

Автор неизвестен нашел решение проблемы :

При разработке многоязычных сайтов для HTML-страниц наиболее удобней и предпочтительней использовать кодировку UTF-8, обеспечивающую поддержку всех или почти всех существующих языков и кодирующую ASCII-символы (латинский алфавит, цифры и специальные символы) одним байтом, а национальные алфавиты — несколькими. Таким образом, кодировка UTF-8 имеет переменную физическую длину каждого символа. В связи с этим иногда возникают проблемы при программировании мультиязычных сайтов.

К примеру, в языке программирования PHP функции strlen и substr выдают некорректные результаты, если в строке имеются символы национального алфавита (поскольку предназначены для работы с однобайтовой кодировкой). Конечно же, в PHP существуют такие функции как mb_strlen и mb_susbtr, специально предназначенные для работы с мультибайтовыми строками. Но, по умолчанию поддержка Multibyte String Functions в PHP выключена, что автоматически ограничивает выбор хостинга для проектируемого сайта. Кроме того, при подключении модуля mb_string указывается набор поддерживаемых языков. А потому существует вероятность, что требуемого Вам языка может не оказаться в списке поддерживаемых.

Впрочем, существует другое, более удобное и гибкое решение проблемы. Воспользовавшись функциями PCRE, корректно воспринимающими кодировку UTF-8, можно написать свои функции utf8_strlen и utf8_substr:


<?php
function utf8_strlen($s)
{
    return 
preg_match_all('/./u'$s$tmp);
}

function 
utf8_substr($s$offset$len 'all')
{
    if (
$offset<0$offset utf8_strlen($s) + $offset;
    if (
$len!='all'
    {
        if (
$len<0$len utf8_strlen($s) - $offset $len;
        
$xlen utf8_strlen($s) - $offset;
        
$len = ($len>$xlen) ? $xlen $len;
        
preg_match('/^.{' $offset '}(.{0,'.$len.'})/us'$s$tmp);
    }
    else
    {
        
preg_match('/^.{' $offset '}(.*)/us'$s$tmp);
    }
    return (isset(
$tmp[1])) ? $tmp[1] : false;
}
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования