Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› Кодирование Unicode в php |
Посл.ответ | Сообщение |
|
Создано: 29 июня 2014 03:37 · Поправил: Isaev · Личное сообщение · #1 Столкнулся с проблеммкой простой пример: Строка "André" последний символ, если смотрим в WinHex например, выглядит как C3 A9 Это правильное значиние и оно мне и нужно Почему, в php при переводе в json он принимает совсем другой код? Code:
Вывод: "Andr\u00e9" Как это поправить? Хотелось бы получить что-то типа такого: Andr%C3%A9 PS: urlencode помог... А если кто знает почему всё таки в JSON меняются коды, расскажите пожалуйста ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 29 июня 2014 09:35 · Поправил: Veliant · Личное сообщение · #2 либо попробывать JSON_UNESCAPED_UNICODE вторым параметром json_encode | Сообщение посчитали полезным: Isaev |
|
Создано: 29 июня 2014 15:38 · Поправил: Isaev · Личное сообщение · #3 Veliant, там при кодировании переводится в JSON, прогоняется через регулярку, потом берётся от него md5... JSON_UNESCAPED_UNICODE пробовал, он тогда оставляет тот символ как есть и md5 выходит кривое(или может дело вовсе не в этом) Добавлено спустя 16 минут Вот так там всё выглядело: str1 = '{"info":{"reffer":"554332","name":"Tréck Davidson","sex":"2","friends":12}}'; str2 = src.com.serialization.json.JSON.serialize(str1); str2 = str2.replace(new RegExp("\ \ \ \ \ \ \ \ ", "g"), "||"); // Пробелы убрать str2 = utils.MD5.encrypt(str2); это ActionScript, надо перевести в php Но в php похоже json_encode работает не так, как в AS JSON.serialize, и регулярки даже получается работают не так По логике, как я понимаю, serialize экранирует слешами ковычки и, возможно, заменит пробелы и unicode, а регулярка дальше как работает? Слеши экранируют друг друга, значит остаётся 4 из 8... Потом как мне объяснили в AS(а может и везде так) эти 4 слеша снова друг друга экранируют и остаётся 2! Такого я никогда не слышал и тут немного потерялся... Что же оно делает? меняет "\ \ "(Пробелы убрать) на "||"? Но в исходных данных никогда не будет \ по определению, тогда эта регулярка никогда ничего не поменяет? ps: в php такая регулярка вообще не проходит по синтаксису ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 30 июня 2014 05:06 · Поправил: Zorn · Личное сообщение · #4 |
|
Создано: 30 июня 2014 05:24 · Личное сообщение · #5 Zorn пишет: Регулярка не нужна т.е. я правильно понял, она бы работала только если в исходных данных попался '\ '? Тогда после serialize он бы стал двойным и тогда бы его заменило, так? Zorn пишет: А что в str2 после JSON.serialize ? самому интересно, как раз пытаюсь собрать это во флеше, чтобы посмотреть) ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 30 июня 2014 08:31 · Личное сообщение · #6 |
|
Создано: 01 июля 2014 04:26 · Личное сообщение · #7 |
eXeL@B —› Программирование —› Кодирование Unicode в php |
Эта тема закрыта. Ответы больше не принимаются. |