UTF-8 -> win1251

Статус
В этой теме нельзя размещать новые ответы.
Вообще давно гугл с яшей вам в помощь, а так же поиск по сайту, но выручу вас
PHP:
function winToUtf8($s){
	// перекодировка из win в utf-8

	static $table= array
	(
		"\xC0"=>"\xD0\x90","\xC1"=>"\xD0\x91","\xC2"=>"\xD0\x92","\xC3"=>"\xD0\x93","\xC4"=>"\xD0\x94",
		"\xC5"=>"\xD0\x95","\xA8"=>"\xD0\x81","\xC6"=>"\xD0\x96","\xC7"=>"\xD0\x97","\xC8"=>"\xD0\x98",
		"\xC9"=>"\xD0\x99","\xCA"=>"\xD0\x9A","\xCB"=>"\xD0\x9B","\xCC"=>"\xD0\x9C","\xCD"=>"\xD0\x9D",
		"\xCE"=>"\xD0\x9E","\xCF"=>"\xD0\x9F","\xD0"=>"\xD0\xA0","\xD1"=>"\xD0\xA1","\xD2"=>"\xD0\xA2",
		"\xD3"=>"\xD0\xA3","\xD4"=>"\xD0\xA4","\xD5"=>"\xD0\xA5","\xD6"=>"\xD0\xA6","\xD7"=>"\xD0\xA7",
		"\xD8"=>"\xD0\xA8","\xD9"=>"\xD0\xA9","\xDA"=>"\xD0\xAA","\xDB"=>"\xD0\xAB","\xDC"=>"\xD0\xAC",
		"\xDD"=>"\xD0\xAD","\xDE"=>"\xD0\xAE","\xDF"=>"\xD0\xAF","\xAF"=>"\xD0\x87","\xB2"=>"\xD0\x86",
		"\xAA"=>"\xD0\x84","\xA1"=>"\xD0\x8E","\xE0"=>"\xD0\xB0","\xE1"=>"\xD0\xB1","\xE2"=>"\xD0\xB2",
		"\xE3"=>"\xD0\xB3","\xE4"=>"\xD0\xB4","\xE5"=>"\xD0\xB5","\xB8"=>"\xD1\x91","\xE6"=>"\xD0\xB6",
		"\xE7"=>"\xD0\xB7","\xE8"=>"\xD0\xB8","\xE9"=>"\xD0\xB9","\xEA"=>"\xD0\xBA","\xEB"=>"\xD0\xBB",
		"\xEC"=>"\xD0\xBC","\xED"=>"\xD0\xBD","\xEE"=>"\xD0\xBE","\xEF"=>"\xD0\xBF","\xF0"=>"\xD1\x80",
		"\xF1"=>"\xD1\x81","\xF2"=>"\xD1\x82","\xF3"=>"\xD1\x83","\xF4"=>"\xD1\x84","\xF5"=>"\xD1\x85",
		"\xF6"=>"\xD1\x86","\xF7"=>"\xD1\x87","\xF8"=>"\xD1\x88","\xF9"=>"\xD1\x89","\xFA"=>"\xD1\x8A",
		"\xFB"=>"\xD1\x8B","\xFC"=>"\xD1\x8C","\xFD"=>"\xD1\x8D","\xFE"=>"\xD1\x8E","\xFF"=>"\xD1\x8F",
		"\xB3"=>"\xD1\x96","\xBF"=>"\xD1\x97","\xBA"=>"\xD1\x94","\xA2"=>"\xD1\x9E"
	);

	return strtr($s, $table);
}

// перекодировка из utf8 в win
function imUtf8ToWin($s){
	// перекодировка из utf8 в win

	static $table= array
	(
		"\xD0\x90"=>"\xC0","\xD0\x91"=>"\xC1","\xD0\x92"=>"\xC2","\xD0\x93"=>"\xC3","\xD0\x94"=>"\xC4",
		"\xD0\x95"=>"\xC5","\xD0\x81"=>"\xA8","\xD0\x96"=>"\xC6","\xD0\x97"=>"\xC7","\xD0\x98"=>"\xC8",
		"\xD0\x99"=>"\xC9","\xD0\x9A"=>"\xCA","\xD0\x9B"=>"\xCB","\xD0\x9C"=>"\xCC","\xD0\x9D"=>"\xCD",
		"\xD0\x9E"=>"\xCE","\xD0\x9F"=>"\xCF","\xD0\xA0"=>"\xD0","\xD0\xA1"=>"\xD1","\xD0\xA2"=>"\xD2",
		"\xD0\xA3"=>"\xD3","\xD0\xA4"=>"\xD4","\xD0\xA5"=>"\xD5","\xD0\xA6"=>"\xD6","\xD0\xA7"=>"\xD7",
		"\xD0\xA8"=>"\xD8","\xD0\xA9"=>"\xD9","\xD0\xAA"=>"\xDA","\xD0\xAB"=>"\xDB","\xD0\xAC"=>"\xDC",
		"\xD0\xAD"=>"\xDD","\xD0\xAE"=>"\xDE","\xD0\xAF"=>"\xDF","\xD0\x87"=>"\xAF","\xD0\x86"=>"\xB2",
		"\xD0\x84"=>"\xAA","\xD0\x8E"=>"\xA1","\xD0\xB0"=>"\xE0","\xD0\xB1"=>"\xE1","\xD0\xB2"=>"\xE2",
		"\xD0\xB3"=>"\xE3","\xD0\xB4"=>"\xE4","\xD0\xB5"=>"\xE5","\xD1\x91"=>"\xB8","\xD0\xB6"=>"\xE6",
		"\xD0\xB7"=>"\xE7","\xD0\xB8"=>"\xE8","\xD0\xB9"=>"\xE9","\xD0\xBA"=>"\xEA","\xD0\xBB"=>"\xEB",
		"\xD0\xBC"=>"\xEC","\xD0\xBD"=>"\xED","\xD0\xBE"=>"\xEE","\xD0\xBF"=>"\xEF","\xD1\x80"=>"\xF0",
		"\xD1\x81"=>"\xF1","\xD1\x82"=>"\xF2","\xD1\x83"=>"\xF3","\xD1\x84"=>"\xF4","\xD1\x85"=>"\xF5",
		"\xD1\x86"=>"\xF6","\xD1\x87"=>"\xF7","\xD1\x88"=>"\xF8","\xD1\x89"=>"\xF9","\xD1\x8A"=>"\xFA",
		"\xD1\x8B"=>"\xFB","\xD1\x8C"=>"\xFC","\xD1\x8D"=>"\xFD","\xD1\x8E"=>"\xFE","\xD1\x8F"=>"\xFF",
		"\xD1\x96"=>"\xB3","\xD1\x97"=>"\xBF","\xD1\x94"=>"\xBA","\xD1\x9E"=>"\xA2"
	);

	return strtr($s, $table);
}
 
Также можно использовать :

$str = mb_convert_encoding($str, "UTF-8", "win-1251");
 
tarantas, вы не правы:
1)вы указали параметры в неправильном порядке(первым должен идти во что мы конвертируем, а вторым, необязательным, из чего мы конвертируем)
2)win-1251 такой кодировки не существует.я не знаю ни единой функции переконверации, которая бы принимала эту кодировку в таком обозначении
Правильная запись mb_convert_encoding для перекодировки будет выглядеть так:
PHP:
$str_=mb_convert_encoding($str, "windows-1251", "UTF-8");
//либо так
$str_=mb_convert_encoding($str, "cp1251", "UTF-8");
регистр параметров по идее не важен

ebony_trader, вы хоть сами понимаете, что за ужас вы тут выложили?
спрячьте пожалуйста, пока никто не увидел.
И на будущее уясните:любая стандартная функция в PHP быстрее любой самостоятельно написанной, какой бы хороший и оптимальный алгоритм мы бы не использовали в своей функции. По определению.
До вас написали уже одну стандартную функцию.и после вас, также написали стандартную функцию.не надо пытатся избретать велосипед
 
любая стандартная функция в PHP быстрее любой самостоятельно написанной
полностью согласен, но не у всех хостеров работают нормально и вообще работают mb_convert_encoding и iconv мой же ужас работает везде
 
UPD добавлена проверка соответствия кодировки конвертируемого файла значению $charset_from

а есть возможность сделать это??? помойму отличить можно только utf-8 от всех остальных, ведь он такой специфичный. в ПХП нет такой интеллекуальной ф-ции :)
 
$str = mb_convert_encoding($str, "UTF-8", "win-1251");

формат записи такой же:

$str = iconv($str, "UTF-8", "win-1251"); //стандартная линуксовская функция
;)
 
Подскажите пожалуйста десктопные приложения для конвертации из вин в ютф. Нужно конвертнуть 200 тхт файлов
 
а чем PHP-шные функции из этой темы не подходят?
а в частности код PHP_Master-а?
Из десктопных программ, могу посоветовать Блокнот из стандартной поставки винды)))
Файл->Сохранить как...->Кодировка->UTF-8
 
Ага и так 200 раз =)
 
Ну, а чем же вам не подходят скрипты из этой темы?
Конвертнёт все файлы (кроме директорий и самого себя) в папке в которой лежит сам из кодировки $charset_from в кодировку $charset_to

Либо опишите более подробно необходимый вам функционал, потому что это программа, вроде бы должна подходить вашим требованниям.
Если не подходит, объясните почему.
Если только своей не-десктопностью, то что вам мешает запустить PHP в режиме CLI?
PS просьба о десктопной программе в разделе по PHP выглядит мягко говоря чужеродно:confused:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху