Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/23: Рейтинг темы: голосов - 23, средняя оценка - 4.57
0 / 0 / 2
Регистрация: 11.12.2008
Сообщений: 219

Кодирование из utf8 в windows-1251

04.02.2010, 11:26. Показов 4874. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим есть на входе такая строка : %u0442%u0435%u0441%u0442:test -
это текст в юникоде.
Задачка, никак не могу это хозяйство перекодировать корректно в Виндовую кодировку.
Может кто-то имел дело с таким.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2010, 11:26
Ответы с готовыми решениями:

Конверт из utf8 в windows-1251
Друзья Добрый день) вот такой вопрос как правильно делаеться конверт из utf8 to windows-1251 вопщем пишу на иврите а аутпут его...

Из Utf8 в Windows-1251 (HttpDownload->Get(Url))
Помогите, ато сейчас чекнусь! получаю текст таким образом: void __fastcall TForm1::Give(String Start, String End, String Tsel,...

Кодирование URL в windows-1251
Доброго времени суток! Уже три часа пытаюсь решить проблему, но никак не получается... Хочу открывать страничку поиска на сайте по...

9
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
04.02.2010, 11:55
http://ru2.php.net/manual/ru/function.utf8-decode.php
0
0 / 0 / 2
Регистрация: 11.12.2008
Сообщений: 219
04.02.2010, 12:23  [ТС]
Да пробовал я utf8_decode и то что ниже в коментариях, но у меня чего-то не хочет конвертится, что на входе , то и не выходе....
PHP 4.3.2
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
04.02.2010, 13:50
когда-то для Гугл я использовал
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$c1=chr(208); 
$c2=chr(209); 
u8('ё',209,145); 
u8('Ё',208,129); 
$str='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп';
for ($i=144;$i<192;$i++){
    u8(substr($str,$i-144,$i-143),208,$i);
}
 
$str='рстуфхцчшщъыьэюя';
for ($i=128;$i<144;$i++){
    u8(substr($str,$i-128,$i-127),209,$i);
}
 
function u8($win,$h,$t) { 
    global $w8; 
    $w8[chr($h).chr($t)] = $win; 
} 
 
function utf2win ($text){
    $text=urldecode($text);
    global $c1,$c2,$w8; 
    $u=false; 
    $temp=''; 
    for($i=0,$len=strlen($text);$i<$len;$i++){ 
        $c=substr($text,$i,1); 
        if($u){ 
            $c=$w8[$lc.$c]; 
            $temp.= isset($c)?$c:'?'; 
            $u=false; 
        }elseif($c==$c1 || $c==$c2){ 
            $u=true; 
            $lc=$c; 
        }
        else $temp.= $c; 
    }
    return $temp; 
}
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
04.02.2010, 14:11
поправка
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$c1=chr(208); 
$c2=chr(209); 
u8('ё',209,145); 
u8('Ё',208,129); 
$str='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп';
for ($i=144;$i<192;$i++){
    u8($str[$i-144],208,$i);
}
 
$str='рстуфхцчшщъыьэюя';
for ($i=128;$i<144;$i++){
    u8($str[$i-128],209,$i);
}
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
10.02.2010, 13:16
iconv ('utf-8','cp1251','ТЕКСТ В ЮНИКОДЕ');
только библиотека должна быть подключена
0
0 / 0 / 2
Регистрация: 11.12.2008
Сообщений: 219
10.02.2010, 16:19  [ТС]
Да про эту(iconv ('utf-8','cp1251','ТЕКСТ В ЮНИКОДЕ') функцию я знаю, она работает, но у меня не совсем utf-8, у меня - %u????, непомню как это называется (URL Encoded), а с этим функция не работает.
Хотелось сделать как-то по 'человечески' стандартными функциями, а не посимвольным выдиранием+анализом+конвертация.

Вот есть код, более менее подходит, но все равно это не 'красиво', ищу более универсальные подходы ....
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function utf8RawUrlDecode ($source) {
    $decodedStr = ''
    $pos = 0;
    $len = strlen ($source);
    while ($pos < $len) {
        $charAt = substr ($source, $pos, 1);
        if ($charAt == '%') {
            $pos++;
            $charAt = substr ($source, $pos, 1);
            if ($charAt == 'u') {
                // we got a unicode character
                $pos++;
                $unicodeHexVal = substr ($source, $pos, 4);
                $unicode = hexdec ($unicodeHexVal);
                $entity = '&#'. $unicode . ''
                $decodedStr .= utf8_Encode ($entity);
                //$decodedStr .= chr($unicode-848);
 
                $pos += 4;
            }
            else {
                // we have an escaped ascii character
                $hexVal = substr ($source, $pos, 2);
                $decodedStr .= chr (hexdec ($hexVal));
                $pos += 2;
            }
        }
        else {
            $decodedStr .= $charAt;
            $pos++;
        }
    }
    return $decodedStr;
}
0
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 3
31.03.2010, 17:50
Вы нашли аналог javascript-овой unescape('%u0442%u0435%u0441%u0442') ?
Если да - сообщите, пожалуйста...
0
0 / 0 / 2
Регистрация: 11.12.2008
Сообщений: 219
31.03.2010, 19:39  [ТС]
нет, пока не нашел, стандартной во всяком случае.
0
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 3
07.04.2010, 10:50
Мне на счетчик падает разное, но поскольку суперскорость не нужна, написал свою функцию. Ее мне вполне хватило !
<code>
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html lang='ru'>

<head>
<title>Некий сайт...</title>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
</head>

<body>

<?
function f_decode($p) {
$ret = $p;
$a[] = array('А', '%u0410', 'À', '&Agrave;');
$a[] = array('Б', '%u0411', 'Á', '&Aacute;');
$a[] = array('В', '%u0412', 'Â', '&Acirc;' );
$a[] = array('Г', '%u0413', 'Ã', '&Atilde;');
$a[] = array('Д', '%u0414', 'Ä', '&Auml;' );
$a[] = array('Е', '%u0415', 'Å', '&Aring;' );
$a[] = array('Ё', '%u0401', '¨', '&uml;' );
$a[] = array('Ж', '%u0416', 'Æ', '&AElig;' );
$a[] = array('З', '%u0417', 'Ç', '&Ccedil;');
$a[] = array('И', '%u0418', 'È', '&Egrave;');
$a[] = array('Й', '%u0419', 'É', '&Eacute;');
$a[] = array('К', '%u041A', 'Ê', '&Ecirc;' );
$a[] = array('Л', '%u041B', 'Ë', '&Euml;' );
$a[] = array('М', '%u041C', 'Ì', '&Igrave;');
$a[] = array('Н', '%u041D', 'Í', '&Iacute;');
$a[] = array('О', '%u041E', 'Î', '&Icirc;' );
$a[] = array('П', '%u041F', 'Ï', '&Iuml;' );
$a[] = array('Р', '%u0420', 'Ð', '&ETH;' );
$a[] = array('С', '%u0421', 'Ñ', '&Ntilde;');
$a[] = array('Т', '%u0422', 'Ò', '&Ograve;');
$a[] = array('У', '%u0423', 'Ó', '&Oacute;');
$a[] = array('Ф', '%u0424', 'Ô', '&Ocirc;' );
$a[] = array('Х', '%u0425', 'Õ', '&Otilde;');
$a[] = array('Ц', '%u0426', 'Ö', '&Ouml;' );
$a[] = array('Ч', '%u0427', '×', '&times;' );
$a[] = array('Ш', '%u0428', 'Ø', '&Oslash;');
$a[] = array('Щ', '%u0429', 'Ù', '&Ugrave;');
$a[] = array('Ъ', '%u042A', 'Ú', '&Uacute;');
$a[] = array('Ы', '%u042B', 'Û', '&Ucirc;' );
$a[] = array('Ь', '%u042C', 'Ü', '&Uuml;' );
$a[] = array('Э', '%u042D', 'Ý', '&Yacute;');
$a[] = array('Ю', '%u042E', 'Þ', '&THORN;' );
$a[] = array('Я', '%u042F', 'ß', '&szlig;' );
$a[] = array('а', '%u0430', 'à', '&agrave;');
$a[] = array('б', '%u0431', 'á', '&aacute;');
$a[] = array('в', '%u0432', 'â', '&acirc;' );
$a[] = array('г', '%u0433', 'ã', '&atilde;');
$a[] = array('д', '%u0434', 'ä', '&auml;' );
$a[] = array('е', '%u0435', 'å', '&aring;' );
$a[] = array('ё', '%u0451', '¸', '&cedil;' );
$a[] = array('ж', '%u0436', 'æ', '&aelig;' );
$a[] = array('з', '%u0437', 'ç', '&ccedil;');
$a[] = array('и', '%u0438', 'è', '&egrave;');
$a[] = array('й', '%u0439', 'é', '&eacute;');
$a[] = array('к', '%u043A', 'ê', '&ecirc;' );
$a[] = array('л', '%u043B', 'ë', '&euml;' );
$a[] = ar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2010, 10:50
Помогаю со студенческими работами здесь

Кодирование текста в windows-1257 и windows-1251
На одной странице (index.htm) нужно часть текста написать по-литовски (windows-1257), а часть по-русски (windows-1251). как такое...

Как перевести текст из AnsiString (в формате UTF8) в AnsiString формата Windows-1251?
Поиск по форуму не решил текущую проблему: 1. Есть текст в формате UTF-8 в величине: AnsiString qw; Вопрос: 2. Как перевести текст в...

Преобразование String UTF8 в 1251
Нашел пример: wchar_t s = L&quot;London Москва&quot;; char utf8; wchar_t wstr; char s1251; ...

Win-1251 в UTF8 в текстовый документ
Есть файл в win-1251, нужно загрузить его в memo/stringlist в кодировке UTF8 var s,sl :TStringList; begin S := ...

Не получается перекодировать UTF8 в win-1251
во первых никак его не могу перекодировать в win-1251 а во вторых как открыть в Stream Reader файл чтоб он мне читал не в UTF8? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru