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

Статус
В этой теме нельзя размещать новые ответы.

Sinelnikov

Гуру форума
Регистрация
13 Окт 2009
Сообщения
235
Реакции
58
Привет,
я сразу скажу не программист и работаю в основном с десктопными программами, поэтому вопрос наверное достаточно нубский:

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

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

Вообще проблема в том что меня получается в результате вместо текста вот такая ерунда :
<b>Стандарт CDMA 800: присутствует </b><br>
<b>Стандарт CDMA 1900: нет </b><br>
<b>Уровень SAR: 98 </b><br>

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

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

<b>Ҳᮤᱲ CDMA 800: ౨b><br>
<b>Ҳᮤᱲ CDMA 1900:  </b><br>
<b>԰SAR: 98 </b><br>



<b>Афанасий :Отсутствие GPS навигацииПоддержка карт памяти до 16 GB, горячая замена microSD.
 
это у тебя UTF8 в крякобязах. скороее всего источник(теестовый файл?) этих данных хранится в утф, просто перекодируй. на крайняй можно посмотреть в сторону iconv
 
Понятно что разные куски текста получаются в разных кодировках , непонятно как это исправить и почему так ?
1. пропишите в файле .htaccess (если его нет, создайте и закиньте в корень:(
Код:
AddDefaultCharset utf-8
2. добавьте всамом верху скрипта строку:
PHP:
header('Content-Type:text/html; charset=utf-8');
сами файлы тоже должны быть сохранены в utf-8 (вместо utf-8 соответственно укажите нужную кодировку)
 
есть программа такая она расшифровывает русские тексты, у меня были однажды проблемы с кодировкой в базе, база форума ипб была в кои 8 и я никак не мог ее перенести с хостинга, так вот она мне помогла очень сильно, но все равно руками пришлось много изменять.
 
Вариант 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
В вашем скрипте прием стоит win-1251

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

О функции:

+ нужно определить кодировку приема:

определяем кодировку.. конвертируем и выводим..
 
Кракозябры - то что составлено при помощи скрипта .
Может подскажете в чём проблема ?
Во вложении класс.
Сохраняем его к себе, кладем этот 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 KB · Просмотры: 26
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху