Проблемы с кодировкой при генерации текста

Тема в разделе "PHP", создана пользователем Sinelnikov, 2 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Sinelnikov

    Sinelnikov

    Регистр.:
    13 окт 2009
    Сообщения:
    238
    Симпатии:
    54
    Привет,
    я сразу скажу не программист и работаю в основном с десктопными программами, поэтому вопрос наверное достаточно нубский:

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

    К сожалению сам код не могу показать т.к. скрипт куплен вскладчину (тут же на нулледе)

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

    Соответсвенно если полученный текст смотреть в ютф8 то выглядит так

     
  2. prokopa

    prokopa

    Регистр.:
    27 июн 2007
    Сообщения:
    402
    Симпатии:
    105
    это у тебя UTF8 в крякобязах. скороее всего источник(теестовый файл?) этих данных хранится в утф, просто перекодируй. на крайняй можно посмотреть в сторону iconv
     
    maxdam нравится это.
  3. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    1. пропишите в файле .htaccess (если его нет, создайте и закиньте в корень:(
    Код:
    AddDefaultCharset utf-8
    2. добавьте всамом верху скрипта строку:
    PHP:
    header('Content-Type:text/html; charset=utf-8');
    сами файлы тоже должны быть сохранены в utf-8 (вместо utf-8 соответственно укажите нужную кодировку)
     
  4. god1ike

    god1ike Создатель

    Регистр.:
    1 апр 2009
    Сообщения:
    18
    Симпатии:
    5
    есть программа такая штирлиц она расшифровывает русские тексты, у меня были однажды проблемы с кодировкой в базе, база форума ипб была в кои 8 и я никак не мог ее перенести с хостинга, так вот она мне помогла очень сильно, но все равно руками пришлось много изменять.
     
  5. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Вариант 1: Ваш исходный файл, откуда берётся текст, перед парсингом открыть и пересохранить в вашу кодировку по умолчанию (Я предполагаю, что у вас - windows-1251), а затем уже парсить
    Вариант 2: Ничего не пересохранять, просто перед выводом строку, которую выделил парсер, проганять через iconv:
    PHP:
    iconv("utf-8""windows-1251""ваш текст в utf-8");
    Во втором варианте может быть косяк:
    если в вашем тексте, который вы парсите, имеются символы, которых нет в кодировке 1251, то вы получите "квадратики" вместо этих символов.
    В таком случае вам надо использовать впомогательный класс:

    ConvertCharset.class.php
    _www.phpclasses.org/browse/file/5131.html
    Использовать класс можно так:
    PHP:
    require_once('script/ConvertCharset/ConvertCharset.class.php');
    $s "Ваш мега-текст написанный в кодировке utf-8";
    // Usage: ConvertCharset(string $FromCharset, string $ToCharset, boolean $TurnOnEntities)
    $sh = new ConvertCharset("utf-8","windows-1251");
    $s $sh->Convert($s); // перекодированный текст
    Он хитрые символы заменит на html-сущности

    Вариант 3:
    Пересохранить ваши скрипты в utf-8, и через htaccess выставить для сервера кодировку по умолчанию - utf8
    AddDefaultCharset UTF-8


    Я бы выбрал третий вариант, т.к. считаю, что веб-приложения должны быть в utf8 ИМХО
     
  6. maxdam

    maxdam Читатель

    Заблокирован
    Регистр.:
    16 ноя 2008
    Сообщения:
    157
    Симпатии:
    13
    В вашем скрипте прием стоит win-1251

    попробуйте перекодить при приеме в iconv

    О функции: http://yandex.ua/yandsearch?text=iconv+php&lr=143&rdrnd=358901

    + нужно определить кодировку приема: http://yandex.ua/yandsearch?text=%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8%20%D0%BD%D0%B0%20php&tld=ua&lr=143&ncrnd=5429&msp=1

    определяем кодировку.. конвертируем и выводим..
     
  7. monilych

    monilych Писатель

    Регистр.:
    4 сен 2009
    Сообщения:
    4
    Симпатии:
    0
  8. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    105
    Симпатии:
    21
    Во вложении класс.
    Сохраняем его к себе, кладем этот php файл рядом со скриптом.
    Подключаем php кодом:
    PHP:
    require_once("iconv.php");
    $text charset_x_win($text);
    $text iconv("cp1251""UTF-8"$text);
    В итоге, текст любой кодировки, содержащийся в переменной $text перекодируется сначала в Win-1251, а затем в UTF-8
     

    Вложения:

    • iconv.rar
      Размер файла:
      7,5 КБ
      Просмотров:
      20
    Zubache и comvit нравится это.
Статус темы:
Закрыта.