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

Форум PHP

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

 

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

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

тема: Крякозябры уже бесят! :(
 
 автор: Maxam   (28.01.2007 в 16:41)   письмо автору
 
 

Вот код


            $max_chr = 2500;
            $text = file_get_contents('Myths_Drevney_Greeces.txt');
        $sec = (isset($_GET['sec']) ? intval($_GET['sec']) : 1);
        $pages = ceil(strlen($text)/$max_chr);

    if ($sec < 0 && $sec > $pages) $sec = 1;
    print '<p align="left"><small>';
    print '<font class="d">Страницы:</font> ';
    for ($i = 1; $i <= $pages; $i++) if($i == 1 || $i == $pages || abs($i-$sec) <=3) {
    print ($sec == $i ? $i.' | ' : '<a href="./?'.$i.'">'.$i.'</a> | ');
    }
    $sec_text = substr($text, ($sec - 1) * $max_chr, $max_chr);
    print '<br/>'.$sec_text.'<br/>';


Саму страницу сохраняю в utf-8. .txt файл тоже. Но когда это выводит в начале и конце какие-то квадратики, в опера треугольнички... что это
Как это убрать... подскажите, или код поправьте. я не знаю чо уже делать. :(:(:(:(:(

   
 
 автор: Trianon   (28.01.2007 в 17:01)   письмо автору
 
   для: Maxam   (28.01.2007 в 16:41)
 

Вы пытаетесь резать строку посредине символа.
Применяйте функции mb_strlen, mb_substr
http://ru2.php.net/manual/ru/ref.mbstring.php

   
 
 автор: Maxam   (28.01.2007 в 19:29)   письмо автору
 
   для: Trianon   (28.01.2007 в 17:01)
 

Вы извините... но я нифига не понял!!!!!!!

   
 
 автор: Trianon   (28.01.2007 в 19:34)   письмо автору
 
   для: Maxam   (28.01.2007 в 19:29)
 

В многобайтовых кодировках (к которым относится utf-8) некоторые символы кодируются не одним байтом, а несколькими. Чтобы правильно разрезать текст в такой кодировке, нужно учитывать это обстоятельство, и не делить один символ на две части, что у Вас, вероятно, происходит.

   
 
 автор: Disable   (29.01.2007 в 00:28)   письмо автору
 
   для: Trianon   (28.01.2007 в 19:34)
 

перекодируйте утф8 а виндовс1251, а потом наоборот.

   
 
 автор: Trianon   (29.01.2007 в 00:35)   письмо автору
 
   для: Disable   (29.01.2007 в 00:28)
 

Во-первых, такой способ угробит все символы, выходящие за рамки ascii и кириллицы.
А они там, вероятно, есть, иначе бы зачем применять unicode для хранения данных?

Во-вторых, это не ко мне, наверное... проблема у Maxam.

   
 
 автор: Maxam   (29.01.2007 в 10:25)   письмо автору
 
   для: Trianon   (29.01.2007 в 00:35)
 

Кодировка такая потому как Скрипт для мобильного Вап сайта. Сотовые поддерживают только эту кодировку. Что же мне тогда делать А?

   
 
 автор: targa   (29.01.2007 в 12:59)   письмо автору
 
   для: Maxam   (29.01.2007 в 10:25)
 

Попробуйте вот так.

   
 
 автор: Disable   (29.01.2007 в 13:26)   письмо автору
 
   для: Maxam   (29.01.2007 в 10:25)
 


 $text = file_get_contents('Myths_Drevney_Greeces.txt');
$text=iconv('utf-8','windows-1251',$text);
...........
ваш код
...........
$sec_text=iconv('windows-1251','utf-8',$sec_text);
print '<br/>'.$sec_text.'<br/>';

Это подойдет, если у вашего хостера не включены функции работы с многобитными кодировками.
Последствия и ограничения такого преобразования вам тоже разъяснили :)
Если же в файле обычный текст без всяких извращенных символов, то сработает.

   
Rambler's Top100
вверх

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