Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что это за кодировка?(2) 
V
    Опции темы
Nickname
Дата 1.10.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Здрасте. Я все парюсь с кодировками - нужно распарсить excel-евский файл. Использую PHP Excel Parser Pro - он все реально распарсивает, но результаты отдает в виде таких строк:
&#1057&#1074&#1086&#1073&#1086&#1076&#1085&#1099&#1077&#32&#1086&#1089&#1090&#1072&#1090&#1082&#1080&#32&#1058&#1052&#1062&#32&#1085&#1072&#32&#1089&#1082&#1083&#1072&#1076&#1072&#1093
что в оригинале звучит как:
Свободные остатки ТМЦ на складах
Можно ли как-то привести все к нормальному виду (как в оригинале), т.е. русскими буквами, а не какойто билебеодой?
PM MAIL   Вверх
MoLeX
Дата 1.10.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Nickname, на локалке фсе исправилось после того как воспользовался echo""
или тебя не устраивает что приходится им пользоваться?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Nickname
Дата 1.10.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(MoLeX @  1.10.2007,  15:21 Найти цитируемый пост)
Nickname, на локалке фсе исправилось после того как воспользовался echo""

На самом деле все красиво выводится - русскими и т.д., но если заглянуть в генерируемый код HTML, то там будет именно эта билеберда -  не буду же я в таком виде сохранять в БД? Вот и хотелось бы узнать как это исправить.
PM MAIL   Вверх
MoLeX
Дата 1.10.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



скорей всего в скрипте имеется отвечающая за шифрование символов. 

Это сообщение отредактировал(а) MoLeX - 1.10.2007, 15:47


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Nickname
Дата 1.10.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(MoLeX @  1.10.2007,  15:46 Найти цитируемый пост)
скорей всего в скрипте имеется отвечающая за шифрование символов. 

Наверно вот эта:
Код

function uc2html($str) {
    $ret = '';
    for( $i=0; $i<strlen($str)/2; $i++ ) {
        $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
        $ret .= '&#'.$charcode;
    }
    return $ret;
}

PM MAIL   Вверх
sTa1kEr
Дата 1.10.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Nickname @  1.10.2007,  15:57 Найти цитируемый пост)
function uc2html($str) {
    $ret = '';
    for( $i=0; $i<strlen($str)/2; $i++ ) {
        $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
        $ret .= '&#'.$charcode;
    }
    return $ret;
}

Мда... iconv и mb_convert и htmlentities уже не в моде? К тому же не правильно функция преобразовывает в HTML сущности, не хватает точки запятой в конце. Советую вместо этой функции использовать iconv() или еще лучше работать полностью в UTF-8.
PM MAIL   Вверх
ewolf
Дата 1.10.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Nickname, перед вами текст, представленный в виде HTML-кодов символов.

Для их декодирования используется функция
html_entity_decode()
PM MAIL ICQ   Вверх
sTa1kEr
Дата 1.10.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(ewolf @  1.10.2007,  19:43 Найти цитируемый пост)
Для их декодирования используется функция
html_entity_decode() 

Она не будет работать т.к. символы перекодированы не правильно - нету ; в конце каждого кода.
PM MAIL   Вверх
Nickname
Дата 2.10.2007, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1




Цитата(ewolf @  1.10.2007,  19:43 Найти цитируемый пост)
Для их декодирования используется функция
html_entity_decode() 

Не помогло, даже если поставить ";" в конце каждого кода.
Цитата(sTa1kEr @  1.10.2007,  17:43 Найти цитируемый пост)
Мда... iconv и mb_convert и htmlentities уже не в моде? К тому же не правильно функция преобразовывает в HTML сущности, не хватает точки запятой в конце. Советую вместо этой функции использовать iconv() или еще лучше работать полностью в UTF-8.

Пробовал iconv(), но в результате получается так, как описал в этом топике
Короче не буду вас отвлекать - попробую разобраться с кодом парсера сам.
PM MAIL   Вверх
MoLeX
Дата 2.10.2007, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Nickname, у одного знакомого была почти такая же ситуация и не чего лучшего он не придумаф решил побаловаться str_replace (т.е. с помощью ее заменял хтмл-символы на русские буквы), это тоже по сути выход но уж слишкой извращенный  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Nickname
Дата 2.10.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(MoLeX @  2.10.2007,  08:56 Найти цитируемый пост)
Nickname, у одного знакомого была почти такая же ситуация и не чего лучшего он не придумаф решил побаловаться str_replace (т.е. с помощью ее заменял хтмл-символы на русские буквы), это тоже по сути выход но уж слишкой извращенный 

Да запарно получается - нужно заменить все русские (строчные и заглавные), английские и знаки пунктуации... Где бы посмотреть соответствие символа коду символа?
PM MAIL   Вверх
MoLeX
Дата 2.10.2007, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



методом научного тыка, шутка  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Nickname
Дата 2.10.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(MoLeX @  2.10.2007,  09:32 Найти цитируемый пост)
методом научного тыка, шутка

В каждой шутке есть доля правды:(
PM MAIL   Вверх
Nickname
Дата 2.10.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



А можно это сделать как-нибудь через MySQL?
PM MAIL   Вверх
sTa1kEr
Дата 2.10.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(MoLeX @  2.10.2007,  09:32 Найти цитируемый пост)
методом научного тыка, шутка  smile 

Лучше методом логическово размышления. 
Итак во первых, судя по функции uc2html(), данные приходят в Unicode, скорее всего в UTF-8.
Во вторых,  в эту функцию надо добавить ';', только тогда это будут корректные HTML сущности
Код

$ret .= '&#'.$charcode.';';

В 3их, в какую кодировку вы ходите перекодировать? Если в Windows-1251, то из HTML сущностей это можно сделать так
Код

$str = "Свободные остатки ТМЦ на складах";
echo html_entity_decode($str, ENT_COMPAT, "cp1251"); // Свободные остатки ТМЦ на складах

Если вам не нужны HTML сущности, то можно сразу перекодировать из UTF-8
Код

// Исключительно для наглядности привожу строку UTF-8 в кодировке Windows-1251
$str = "РЎР_Р_Р+Р_Р_Р_С<Рч Р_С_С'Р°С'РєРё РўР_Р│ Р_Р° С_РєР>Р°Р_Р°С:";
 
echo iconv("UTF-8", "Windows-1251", $str);
// Или
echo mb_convert_encoding($str, "Windows-1251", "UTF-8");


Добавлено через 2 минуты и 44 секунды
Цитата(Nickname @  2.10.2007,  10:04 Найти цитируемый пост)
А можно это сделать как-нибудь через MySQL? 

Можно, но использование разных кодировок в одном скрипте грозит еще большей путаницей, т.ч. крайне не советую. Лучше полностью переходите на UTF-8 либо данные из парсера сразу перекодируйте в нужную вам кодировку.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.