Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Какая это кодировка и как ее переконвертить в UTF-8?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Типов
LShark
Отправлено: 08 Декабря, 2012 - 15:24:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




При парсинге старых документов WORD, он сохраняет русский текст в таком виде:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <title>&#1058;&#1080;&#1087;&#1086;&#1074;&#1099;&#1077; &#1092;&#1086;&#1088;&#1084;&#1099; &#1085;&#1072;&#1088;&#1091;&#1096;&#1077;&#1085;&#1080;&#1081; &#1080;&#1084;&#1084;&#1091;&#1085;&#1080;&#1090;&#1077;&#1090;&#1072; &#1074; &#1087;&#1086;&#1083;&#1086;&#1089;&#1090;&#1080; &#1088;&#1090;&#1072;</title>


Отображает верно, внутри есть такая строка:
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">

Сами понимаете, 300 килобайтный документ из-за этого становится почти в 6 раз больше, что не радует.

Для перекодирования из более новых сохранений (а там win1251) используется следующее:
$file_data = iconv($encode, "UTF-8", str_ireplace($encode, "UTF-8", $data));
где $encode - кодировка из:
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">

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

(Отредактировано автором: 08 Декабря, 2012 - 15:27:17)



-----
Истина прежде всего в том, что...
 
 Top
LIME
Отправлено: 08 Декабря, 2012 - 15:30:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




html_entity_decode()

(Отредактировано автором: 08 Декабря, 2012 - 15:32:18)

 
 Top
LShark
Отправлено: 08 Декабря, 2012 - 15:42:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




Хм...
Попытка
PHP:
скопировать код в буфер обмена
  1. echo html_entity_decode("&#1058;&#1080;&#1087;&#1086;&#1074;&#1099;&#1077;",ENT_NOQUOTES) ;


Выдает на выходе
CODE (htmlphp):
скопировать код в буфер обмена
  1. &#1058;&#1080;&#1087;&#1086;&#1074;&#1099;&#1077;


Что то делаю не так?
(Добавление)
Имею ввиду - в исходном тексте страницы остаются все те же комбинации. Выводится на экран, естестенно, русский текст.


-----
Истина прежде всего в том, что...
 
 Top
LIME
Отправлено: 08 Декабря, 2012 - 15:49:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




странно
но кодировку надо указать полюбому
 
 Top
armancho7777777 Супермодератор
Отправлено: 08 Декабря, 2012 - 16:35:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LShark пишет:
Что то делаю не так?

Не знаю...
У меня работает.
 
 Top
LShark
Отправлено: 08 Декабря, 2012 - 16:50:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




ОТОБРАЖАЕТСЯ все правильно, но при просмотре ИСХОДНОГО текста HTML страницы - все те же шестизначные.
(Добавление)
LIME пишет:
странно
но кодировку надо указать полюбому

Пытался подставлять cp1251, UTF-8 - ни фига. В исходниках - все теже шестисимвольные комплексы.
(Добавление)
Хм... При прямой перекодировке СТРОКИ, состоящей ТОЛЬКО из этих кодов - все срабатывает. Но если так обрабатываю ВЕСЬ документ (со всеми тегами и прочим) - текст не меняется...
(Добавление)
Получаю
CODE (htmlphp):
скопировать код в буфер обмена
  1. ГоС&#129;С&#402;дашС&#129;твенР


-----
Истина прежде всего в том, что...
 
 Top
LIME
Отправлено: 08 Декабря, 2012 - 17:19:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




выше я имел ввиду 3ий параметр
 
 Top
LShark
Отправлено: 08 Декабря, 2012 - 17:30:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




Разобрался. Пришлось поменять порядок декодирования.

$file_data = html_entity_decode(iconv($encode, "UTF-8", str_ireplace($encode, "UTF-8", $data)),ENT_NOQUOTES,'UTF-8');

Теперь все срабатывает отлично.


-----
Истина прежде всего в том, что...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB