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

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

04.02.2010, 11:26. Показов 4920. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru