Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Парсинг юникода аля /u123/u456/u789 (http://www.flasher.ru/forum/showthread.php?t=171823)

Acrossfy 25.11.2011 04:46

Парсинг юникода аля /u123/u456/u789
 
Здравствуйте. JSON либа передает кирилицу, как /u123/u456/u789

Честно гуглил, какие-либо смутные примеры находил, но на деле ничего толкового. Подскажите, как быть?

scarm 25.11.2011 07:34

Не по теме AS3, но все же...
Парсил как-то API Facebook через OAuth 2.0.
При получении русских имен и названий выводился как-раз такой юникод.
Проблему решил тем, что в обработчике php перед собственно результатом запроса выводил html header и указывал кодировку utf-8
Код:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>


MXPain 25.11.2011 08:15

можно через http://www.php.net/manual/ru/function.iconv.php

Nooob 25.11.2011 18:34

Вобще символы \u0000 и так выводятся во флеше, а парсятся они так: \u необходимо заменить на 0x и будет uint символа.
Код AS3:

trace(String.fromCharCode(parseInt(("/u0046").split("/u").join("0x"))))

ещё возможно поможет замена "/" на "\". Иногда встречается такое что приходит вида \\u0046 (вконтакте например, при первом запросе к апи) нужно в таком случае убрать просто лишнюю \

GBee 25.11.2011 19:36

Использую такой вариант:
PHP код:

<?php
    
function json_encode_cyr($str
    {
        
$arr_replace_utf = array('\u0410''\u0430','\u0411','\u0431','\u0412','\u0432',
        
'\u0413','\u0433','\u0414','\u0434','\u0415','\u0435','\u0401','\u0451','\u0416',
        
'\u0436','\u0417','\u0437','\u0418','\u0438','\u0419','\u0439','\u041a','\u043a',
        
'\u041b','\u043b','\u041c','\u043c','\u041d','\u043d','\u041e','\u043e','\u041f',
        
'\u043f','\u0420','\u0440','\u0421','\u0441','\u0422','\u0442','\u0423','\u0443',
        
'\u0424','\u0444','\u0425','\u0445','\u0426','\u0446','\u0427','\u0447','\u0428',
        
'\u0448','\u0429','\u0449','\u042a','\u044a','\u042d','\u044b','\u042c','\u044c',
        
'\u042d','\u044d','\u042e','\u044e','\u042f','\u044f');
        
$arr_replace_cyr = array('А''а''Б''б''В''в''Г''г''Д''д''Е''е',
        
'Ё''ё''Ж','ж','З','з','И','и','Й','й','К','к','Л','л','М','м','Н','н','О','о',
        
'П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Ц','ц','Ч','ч','Ш','ш',
        
'Щ','щ','Ъ','ъ','Ы','ы','Ь','ь','Э','э','Ю','ю','Я','я');
        
$str1 json_encode($str);
        
$str2 str_replace($arr_replace_utf$arr_replace_cyr$str1);
        return 
$str2;
    }
?>


MXPain 25.11.2011 19:51

GBee найс) стащу себе

iNils 25.11.2011 20:26

Код AS3:

package ru.inils.string {
        /**
        * Функция для преобразования кода символов \uXXXX в сам символ.
        * @param        codepoints        Исходный текст с кодами.
        * @return        Текст с преобразованными символами.
        */

        public function codepointsToUTF (codepoints:String):String {
                //text.replace (/\\u([\da-f]{4})/gi, "&#x$1;");
                return codepoints.replace (/(\\u)([\da-f]{4})/gi, convertToUTF);
        }
}
internal function convertToUTF (...rest):String {
        return String.fromCharCode (parseInt (rest[0].replace ('\\u', ''), 16));
        //return String.fromCharCode (parseInt (code.substr (2), 16));
}


Nooob 25.11.2011 21:10

PHP код:

<?php
function json_encode_cyr($value
{
     
$arr explode("\u"json_encode($value));
     
$str $arr[0];
     for(
$i 1$i count($arr); $i++)
     {
         
$str .= substr_replace($arr[$i], "&#".(("0x".substr($arr[$i], 04)) * 1).";"04);
     }
     return 
htmlspecialchars_decode($strENT_QUOTES);
}

$a = array("asd23'sdfsdfzxcv43лоыва%ыч","bazdfgsdfgыва45325пыфва32452345п");
echo 
json_encode_cyr($a);
?>

вот что придумал =)

Acrossfy 26.11.2011 15:19

Парни, спасибо вам всем огромное за помощь) Столько примеров хороших и разных, и за разъяснения тоже спасибо)


Часовой пояс GMT +4, время: 12:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.