X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Смена кодировки при парсинге
Гость_shaman_*
сообщение 2009-09-26, 23:30
Сообщение #1



Гости





1) Написал граббер.

2) Запрашиваемая странца в кодировке UTF 8

3) Конечный сайт - win1251

4) При просмотре результата - кракозябры, соответственно.

Вопрос: как можно сменить кодировку при отдаче в браузер
Перейти в начало страницы
+Цитировать сообщение
Screatch
сообщение 2009-09-27, 1:41
Сообщение #2
Опытный
Иконка группы

Группа: Eleanor TEAM
Сообщений: 717
Регистрация: 2008-11-11
Из: Таллинн

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


Если я вас правильно понял, добавьте в начало .htaccess
AddDefaultCharset UTF-8
Перейти в начало страницы
+Цитировать сообщение
Гость_shaman_*
сообщение 2009-09-27, 23:00
Сообщение #3



Гости





Не, это мы по умолчанию так ставим кодировку...
вопрос открыт
Перейти в начало страницы
+Цитировать сообщение
Гость_patriot_*
сообщение 2009-09-27, 23:16
Сообщение #4



Гости





посмотри в библиотеке mb_string. там есть нужные функции
Перейти в начало страницы
+Цитировать сообщение
Гость_shaman_*
сообщение 2009-09-28, 1:07
Сообщение #5



Гости





patriot, о, знакомые люди ;)
Да на конечном сайте не подключена библиотека эта, ну всмысле на сервере.
Была впринципе задумка через str_replace перегналь все иероглифи на наши буквы, как результат получается, но запутаться легко

Сообщение отредактировал shaman - 2009-09-28, 1:07
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-09-28, 16:50
Сообщение #6
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

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


http://php.net/mb_convert_encoding
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-09-28, 16:56
Сообщение #7
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

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


Alexander,
Цитата (shaman @ 28.9.2009, 5:07)
Да на конечном сайте не подключена библиотека эта
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-09-28, 17:15
Сообщение #8
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

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


Не заметил. Ладно, тогда:
iconv

Сообщение отредактировал Alexander - 2009-09-28, 17:16
Перейти в начало страницы
+Цитировать сообщение
Гость_shaman_*
сообщение 2009-09-28, 19:34
Сообщение #9



Гости





Пробовал iconv, тоже, иначе не спрашивал бы :)
Вобщем думаю, что с поставленной задачей долго придется бороться.... :umnik:
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-09-28, 21:18
Сообщение #10
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

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


shaman, и как же Вы пробовали? Покажите код- что-нибудь придумаем.
Перейти в начало страницы
+Цитировать сообщение
Гость_SHAKA1_*
сообщение 2009-09-29, 8:50
Сообщение #11



Гости





Вот, попробуй функциями перекодировать:

function utf2win($str,$type="w"){
static $conv;
if( !is_array($conv) ){
// ASCII 128 - 255
$conv['w'] = array(
"\x80","\x81","\x82","\x83","\x84","\x85","\x86","\x87","\x88","\x89","\x8a","\x8b","\x8c","\x8d","\x8e","\x8f",
"\x90","\x91","\x92","\x93","\x94","\x95","\x96","\x97","\x98","\x99","\x9a","\x9b","\x9c","\x9d","\x9e","\x9f",
"\xa0","\xa1","\xa2","\xa3","\xa4","\xa5","\xa6","\xa7","\xa8","\xa9","\xaa","\xab","\xac","\xad","\xae","\xaf",
"\xb0","\xb1","\xb2","\xb3","\xb4","\xb5","\xb6","\xb7","\xb8","\xb9","\xba","\xbb","\xbc","\xbd","\xbe","\xbf",
"\xc0","\xc1","\xc2","\xc3","\xc4","\xc5","\xc6","\xc7","\xc8","\xc9","\xca","\xcb","\xcc","\xcd","\xce","\xcf",
"\xd0","\xd1","\xd2","\xd3","\xd4","\xd5","\xd6","\xd7","\xd8","\xd9","\xda","\xdb","\xdc","\xdd","\xde","\xdf",
"\xe0","\xe1","\xe2","\xe3","\xe4","\xe5","\xe6","\xe7","\xe8","\xe9","\xea","\xeb","\xec","\xed","\xee","\xef",
"\xf0","\xf1","\xf2","\xf3","\xf4","\xf5","\xf6","\xf7","\xf8","\xf9","\xfa","\xfb","\xfc","\xfd","\xfe","\xff");
$conv['u'] = array(
"\xd0\x82","\xd0\x83","\xe2\x80\x9a","\xd1\x93","\xe2\x80\x9e","\xe2\x80\xa6","\xe2\x80\xa0","\xe2\x80\xa1","\xe2\x82\xac","\xe2\x80\xb0","\xd0\x89","\xe2\x80\xb9","\xd0\x8a","\xd0\x8c","\xd0\x8b","\xd0\x8f",
"\xd1\x92","\xe2\x80\x98","\xe2\x80\x99","\xe2\x80\x9c","\xe2\x80\x9d","\xe2\x80\xa2","\xe2\x80\x93","\xe2\x80\x94","","\xe2\x84\xa2","\xd1\x99","\xe2\x80\xba","\xd1\x9a","\xd1\x9c","\xd1\x9b","\xd1\x9f",
"\xc2\xa0","\xd0\x8e","\xd1\x9e","\xd0\x88","\xc2\xa4","\xd2\x90","\xc2\xa6","\xc2\xa7","\xd0\x81","\xc2\xa9","\xd0\x84","\xc2\xab","\xc2\xac","\xc2\xad","\xc2\xae","\xd0\x87",
"\xc2\xb0","\xc2\xb1","\xd0\x86","\xd1\x96","\xd2\x91","\xc2\xb5","\xc2\xb6","\xc2\xb7","\xd1\x91","\xe2\x84\x96","\xd1\x94","\xc2\xbb","\xd1\x98","\xd0\x85","\xd1\x95","\xd1\x97",
"\xd0\x90","\xd0\x91","\xd0\x92","\xd0\x93","\xd0\x94","\xd0\x95","\xd0\x96","\xd0\x97","\xd0\x98","\xd0\x99","\xd0\x9a","\xd0\x9b","\xd0\x9c","\xd0\x9d","\xd0\x9e","\xd0\x9f",
"\xd0\xa0","\xd0\xa1","\xd0\xa2","\xd0\xa3","\xd0\xa4","\xd0\xa5","\xd0\xa6","\xd0\xa7","\xd0\xa8","\xd0\xa9","\xd0\xaa","\xd0\xab","\xd0\xac","\xd0\xad","\xd0\xae","\xd0\xaf",
"\xd0\xb0","\xd0\xb1","\xd0\xb2","\xd0\xb3","\xd0\xb4","\xd0\xb5","\xd0\xb6","\xd0\xb7","\xd0\xb8","\xd0\xb9","\xd0\xba","\xd0\xbb","\xd0\xbc","\xd0\xbd","\xd0\xbe","\xd0\xbf",
"\xd1\x80","\xd1\x81","\xd1\x82","\xd1\x83","\xd1\x84","\xd1\x85","\xd1\x86","\xd1\x87","\xd1\x88","\xd1\x89","\xd1\x8a","\xd1\x8b","\xd1\x8c","\xd1\x8d","\xd1\x8e","\xd1\x8f");
}//if
if ($type == 'w') return str_replace($conv['u'],$conv['w'],$str);
elseif ($type == 'u') return str_replace($conv['w'], $conv['u'],$str);
else return $str;
}

PHP: фукнции перекодировки UTF8-Win, Win-UTF8
function Utf8Win($str,$type="w")  {
	static $conv='';

	if (!is_array($conv))  {
		$conv = array();

		for($x=128;$x<=143;$x++)  {
			$conv[&#39;u&#39;][]=chr(209).chr($x);
			$conv[&#39;w&#39;][]=chr($x+112);

		}

		for($x=144;$x<=191;$x++)  {
			$conv[&#39;u&#39;][]=chr(208).chr($x);
			$conv[&#39;w&#39;][]=chr($x+48);
		}

		$conv[&#39;u&#39;][]=chr(208).chr(129);
		$conv[&#39;w&#39;][]=chr(168);
		$conv[&#39;u&#39;][]=chr(209).chr(145);
		$conv[&#39;w&#39;][]=chr(184);
		$conv[&#39;u&#39;][]=chr(208).chr(135);
		$conv[&#39;w&#39;][]=chr(175);
		$conv[&#39;u&#39;][]=chr(209).chr(151);
		$conv[&#39;w&#39;][]=chr(191);
		$conv[&#39;u&#39;][]=chr(208).chr(134);
		$conv[&#39;w&#39;][]=chr(178);
		$conv[&#39;u&#39;][]=chr(209).chr(150);
		$conv[&#39;w&#39;][]=chr(179);
		$conv[&#39;u&#39;][]=chr(210).chr(144);
		$conv[&#39;w&#39;][]=chr(165);
		$conv[&#39;u&#39;][]=chr(210).chr(145);
		$conv[&#39;w&#39;][]=chr(180);
		$conv[&#39;u&#39;][]=chr(208).chr(132);
		$conv[&#39;w&#39;][]=chr(170);
		$conv[&#39;u&#39;][]=chr(209).chr(148);
		$conv[&#39;w&#39;][]=chr(186);
		$conv[&#39;u&#39;][]=chr(226).chr(132).chr(150);
		$conv[&#39;w&#39;][]=chr(185);
	}

	if ($type == &#39;w&#39;) {
		return str_replace($conv[&#39;u&#39;],$conv[&#39;w&#39;],$str);
	} elseif ($type == &#39;u&#39;) {
		return str_replace($conv[&#39;w&#39;], $conv[&#39;u&#39;],$str);
	} else {
		return $str;
	}
}


Перекодировка UTF-8 в cp1251

Сообщение отредактировал SHAKA1 - 2009-09-29, 8:53
Перейти в начало страницы
+Цитировать сообщение
Гость_shaman_*
сообщение 2009-09-30, 20:26
Сообщение #12



Гости





SHAKA1, да , хорошая функция, работает.
только от первоначального текста осталось Ђњ и ”, и еще что то, по логике - это кавычки "

кавычки и "тире"

еще "многоточие нашел"
вобщем работает класно, респект
Перейти в начало страницы
+Цитировать сообщение
Гость_Ungern_*
сообщение 2012-10-19, 5:00
Сообщение #13



Гости





При замене кодировок при парсинге не всегда есть возможность использовать iconv(). Посмотрите здесь подробнее осмене кодировок
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0464 сек.    11 запросов    GZIP включен    Сейчас: 2020-10-20, 23:21