[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: UTF-8 -> windows-1251
motorway
Нужна абсолютно проверенная функция для перекодировки из UTF-8 в Windows-1251 без доп. установок в PHP. Наткнулся тут на одну, выяснилось, что не передает нек. символы &*()-+\_=|[];':/.
Нужен код функции.

P.S. Даже стандартные iconv и mb_convert_encoding не работают нормально с этими символами!




Спустя 3 минуты, 10 секунд (3.07.2009 - 22:07) PandoraBox2007 написал(а):
установи модуль регулярные выражения pcre, iconv

Спустя 16 минут (3.07.2009 - 22:23) motorway написал(а):
Я же написал, что iconv не работает

Спустя 22 минуты, 28 секунд (3.07.2009 - 22:45) kirik написал(а):
Цитата (motorway @ 3.07.2009 - 14:03)
функция для перекодировки из UTF-8 в Windows-1251

Что не позволяет оставить старушку 1251 в покое? smile.gif

Попробуй
PHP
function utf8_to_cp1251($s) {
    for (
$c 0$c strlen($s); $c++) {
        
$i ord($s[$c]);
        if (
$i <= 127)
            
$out .= $s[$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;
}

Спустя 26 минут, 56 секунд (3.07.2009 - 23:12) motorway написал(а):
То, что нужно возвращать данные в Эксел в удобочитаемом виде.
По крайней мере уже не проходит знак + и =

Спустя 31 минута, 26 секунд (3.07.2009 - 23:43) kirik написал(а):
motorway
А в каком виде у тебя знаки "+" и "=" получаются? Просто их номер в utf8 таблице 43 и 61 соответственно, а значит эти символы должны проходить без преобразований..

Спустя 11 минут, 24 секунды (3.07.2009 - 23:55) PandoraBox2007 написал(а):
PHP
function R_win2utf ($str)
{
        return preg_replace_callback ('/([\xC0-\xFF\xA8\xB8])/', 'R_win2utf_char', $str);
}

    function 
R_win2utf_char ($c)
    {
        list (,
$c) = $c;
        if (
$c == "\xA8") return "\xD0\x81";
        if (
$c == "\xB8") return "\xD1\x91";

        if (
$c >= "\xC0" && $c &lt;= "\xEF")
        return 
"\xD0" chr(ord ($c) - 48);

        if (
$c >= "\xF0")
        return 
"\xD1" chr(ord ($c) - 112);

        return 
$c;
    }


echo R_win2utf("");

Спустя 24 минуты, 36 секунд (4.07.2009 - 00:19) motorway написал(а):
У меня какая-то дьявольщина, вместо них ничего нет. Вероятно, в сам POST запрос они не попадают.
Если кто вдруг знает, как сделать POST запрос на VBA в Excel 2007 с исп. WinHTTP?

Спустя 13 минут, 31 секунда (4.07.2009 - 00:33) twin написал(а):
Я не знаю как на бейсике, но по аналогии с аяксом их нужно кодировать при передаче. В JS для этого encodeURIComponent().
Может поможет...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.