utf_to_cp1251

G
На сайте с 15.08.2009
Offline
38
634

Подскажите как можно перекодировать строку из утф в ср1251 (iconv не предлагать)?

Куплю ссылки, размещу статьи на сайтах агро и смежных с агробизнесом тематик.
M
На сайте с 08.11.2008
Offline
122
#1

а зачем ещё один велосипед? лабораторная работа по программированию?

Новогодний хостинг. Тут! (/ru/forum/comment/13379437) Дед Мороз одобряет!
HapKOTuK
На сайте с 23.08.2007
Offline
30
#2

Вот "табличный" вариант:

http://phpclub.ru/faq/encodings/encodings3

Не будь слишком требователен к себе - будешь неудовлетворен. Не будь слишком требовательным к другим - разочаруешься.
G
На сайте с 15.08.2009
Offline
38
#3

что-то типа того..

есть у кого-то готовый класс?

gazmyas добавил 13.10.2009 в 00:00

gazmyas:
что-то типа того..
есть у кого-то готовый класс?

Перепробовал все варианты.. Может я что-то не так делаю?

Пишу:


$xml = new SimpleXMLElement($xmlstr);
echo utf8_win1251($xml->item[2]->operatorname)."<BR>";

Должно вывести Life(Украина), а выводит Life(). Кирилицу сьедает.. Что-то запутался..

И пример 2 тоже:

Utf8ToWin('Строка в кодировке UTF-8');

выводит только " UTF-8

Что я не так делаю?

glab
На сайте с 10.09.2008
Offline
42
#4

5 секундный поиск в гугле дал результат, причём это ранее поднятая тема на forum.searchengines.ru:

/ru/forum/232571

G
На сайте с 15.08.2009
Offline
38
#5
gazmyas:
что-то типа того..
есть у кого-то готовый класс?

gazmyas добавил 13.10.2009 в 00:00


Перепробовал все варианты.. Может я что-то не так делаю?

Пишу:

$xml = new SimpleXMLElement($xmlstr);
echo utf8_win1251($xml->item[2]->operatorname)."<BR>";


Должно вывести Life(Украина), а выводит Life(). Кирилицу сьедает.. Что-то запутался..

И пример 2 тоже:
Utf8ToWin('Строка в кодировке UTF-8');
выводит только " UTF-8

Что я не так делаю?
glab:
5 секундный поиск в гугле дал результат, причём это ранее поднятая тема на forum.searchengines.ru:
/ru/forum/232571

Взял пример что Вы привели. Перекодирование происходит, но мой текст(только кирилица) из xml - файла не печатается.

Вот код:


include("data2.php");
include("a.charset.php");

echo charset_x_win('ЮЕМПЧЕЛ')."<br />";
echo charset_x_win('юемпчел')."<br />";
echo charset_x_win('человек')."<br />";
echo charset_x_win('ЧЕЛОВЕК')."<br />";
echo charset_x_win("человек")."<br />";
echo charset_x_win("ЧЕЛОВЕК")."<br />";

$xml = new SimpleXMLElement($xmlstr);

echo charset_x_win($xml->item[0]->operatorname)."<BR>";
echo charset_x_win($xml->item[1]->operatorname)."<BR>";
echo charset_x_win($xml->item[2]->operatorname)."<BR>";

#выводит:
человек
ЧЕЛОВЕК
человек
ЧЕЛОВЕК
человек
ЧЕЛОВЕК

Life ()
UMC ()
()

# вот кусок xml файла
<item access="limited">
<country code="ua">Украина</country>
<number>4448</number>
<operatorname>Life (Украина)</operatorname>
<operatorlatin>Life</operatorlatin>
<operatorfull>Life_ua</operatorfull>
<abonentprice>10 грив. (UAH) без НДС</abonentprice>
<price>10</price>
<currency>UAH</currency>
<usdprice>2</usdprice>
</item>

Вместо Life (Украина) пишет Life ()

Почему так?

_
На сайте с 24.07.2002
Offline
299
_Ad
#6

есть специальная прога.. Unifier 5 называется.. Сделана специально для массовой (пакетной конвертации) из кодировки в кодировку.. Это единственно что я нашел, которая конвертила без ошибок...

нужно было целый хтмл сайт из win-1251 в utf-8 перевести.. Справилась наотлично за 30 секунд..

есть правда один минус, пришлось 17 баксов заплатить за лицензию.. потому что кряков нигде не нашел.. видимо мало кому надо такие операции проводить, поэтому пираты не заморачивались..

DJ_Petrovich
На сайте с 13.02.2006
Offline
188
#7

//*** ФУНКЦИЯ ПЕРЕВОДА ИЗ UTF-8 в Win-1251

function Utf8ToWin($fcontents)
{
$out = $c1 = '';
$byte2 = false;
for ($c = 0; $c < strlen($fcontents); $c++) {
$i = ord($fcontents[$c]);
if ($i <= 127) {
$out .= $fcontents[$c];
}
if ($byte2) {
$new_c2 = ($c1 & 3) * 64 + ($i & 63);
$new_c1 = ($c1 >> 2) & 5;
$new_i = $new_c1 * 256 + $new_c2;
if ($new_i == 1025) {
$out_i = 168;
}
else {
if ($new_i == 1105) {
$out_i = 184;
}
else {
$out_i = $new_i - 848;
}
}
$out .= chr($out_i);
$byte2 = false;
}
if (($i >> 5) == 6) {
$c1 = $i;
$byte2 = true;
}
}
return $out;
}
Тонны одноцентового трафика из Директа для ваших сайтов. Настройка - бесплатно! (/ru/forum/779616) Лендинг + Реклама в Яндекс.Директ за 15 минут! (/ru/forum/comment/16213883)
Agel Nash
На сайте с 01.12.2008
Offline
61
#8

DJ_Petrovich, привел отличную функцию, которая в свое время меня очень выручила.

В общем собрал я для себя класс из аналогичных функций, думаю он будет полезен для многих...

txt class.utf8.php.txt
Я (http://agel-nash.ru) - вильгельм "ЗАКОЛЕБАТЕЛЬ" Аудит безопасности MODX сайтов (/ru/forum/783778) | Обучение созданию сайтов (http://modcoach.info/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий