- Json encode windows 1251
- json_encode для windows-1251
- Sending “windows-1251”-encoded string in JSON from python to javascript
- 1 Answer 1
- json_encode и кириллица
- Кириллица в json_encode
- 7 ответов 7
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками json php или задайте свой вопрос.
- Связанные
- Похожие
- Подписаться на ленту
Json encode windows 1251
с ajax-ом работаю через json, поэтому в php активно использую json_encode() функции.
Проблема — при вызове json_encode() из php файла (в кодировке windows-1251) — на выходе apache русский текст вырезан, пустые строки вместо.
Глянул в ман, там коммент насчет русских символов. Т.е. получается что если передавать туда не UTF, а киррилицу например — корректно работать она не будет и поэтому народ предлагает использовать самописную функцию?
Кто сталкивался — как решал проблему? UTF или самописные функции?
| От: | Cyberax |
Дата: | 04.09.08 15:10 | |
Оценка: |
Здравствуйте, insighter, Вы писали:
I>Глянул в ман, там коммент насчет русских символов. Т.е. получается что если передавать туда не UTF, а киррилицу например — корректно работать она не будет и поэтому народ предлагает использовать самописную функцию?
Что значит «передать кириллицу»??
UTF-8 прекрасно подходит для кодирования кириллицы.
| От: | insighter | http://upwork.com/freelancers/ |
016e5772d90cce5fd1
| От: | DeZhavi |
Дата: | 04.09.08 22:56 | |
Оценка: |
Здравствуйте, insighter, Вы писали:
I>Кто сталкивался — как решал проблему? UTF или самописные функции?
не совсем понял проблеммы?!
При POST — GET запросах приходит на сервер не та кодировка?
Если так столкнулся с такой проблемой используя библиотеку extJS, но это не было большой проблемой вот я как сделал
function ToWindows1251($n) <
return iconv(«UTF-8″,»windows-1251», $n);
>
может — это и не то, тогда, разъясните подробнее вашу проблему. для меня ))) может я не так понял.
Этот пример из реального проекта с использованием extJS
| От: | insighter | http://upwork.com/freelancers/ |
016e5772d90cce5fd1
| От: | Centaur |
Дата: | 06.09.08 16:59 | |
Оценка: |
Здравствуйте, insighter, Вы писали:
I>с ajax-ом работаю через json, поэтому в php активно использую json_encode() функции.
I>Проблема — при вызове json_encode() из php файла (в кодировке windows-1251) — на выходе apache русский текст вырезан, пустые строки вместо.
Кодировок, отличных от UTF-8, в AJAX-приложении быть Не Должно.
json_encode для windows-1251
В общем старая добрая песня как я понимаю но найти хорошего варианта не могу.
Задача вообще состоит в отправке через ajax с сервера в json данных в windows-1251 с русскими символами.
Получается все, кроме одного — я не могу грубо говоря на сервере получить строку json с русским текстом.
Подскажите как быть. Спасибо.
Использование iconv для преобразования из windows-1251
Синтаксис мне подсказали: , . А какой для неё код для 1251?
Windows-1251 и символы Юникода
Есть необходимость добавить поддержку всяких разных символов из юникода для вводимых данных на.
Парсинг из windows-1251 в UTF-8
Здравствуйте! Существует модуль для DLE который парсит тв программу с tv.mail.ru. Кодировка моего.
Не работают кодировки и utf-8 и windows-1251
проблема с кодировками: во всех браузерах весь текст (и с дримвивера и с БД) отображается.
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Перевод записей БД MySQL из UTF-8 в Windows-1251
Здравствуйте! Я генерирую документ PDF с помощью FPDF. Этот документ должен содержать таблицу.
Сортировка json_encode
Привет всем! На входе правильно отсортированный массив с помощью ORDER BY по алфавиту. На выходе.
Windows 1251 = > base 64
Всем доброго времени суток!. Вопрос следующий, есть сайт, на котором есть есть форма, в которой в.
Кодирование из utf8 в windows-1251
Допустим есть на входе такая строка : %u0442%u0435%u0441%u0442:test — это текст в юникоде.
Sending “windows-1251”-encoded string in JSON from python to javascript
What I need to do is best descriped as example. Previously, I had the following code:
Now I want to modify the architecture of my entire app and send the string which is supposed to be the file content to client via JSON and to generate the file via javascript.
So, now my code looks something like this:
The problem is that I get UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xd4 in position 53: ordinal not in range(128)
I also tried the second option this way:
Then, on client, I try to covert utf8 to windows-1251.
. but. I get distorted symbols. I know I am doing something terribly wrong here and am likely to mess up things with encoding, but still it’s been an entire day I couldn’t solve this issue. Could someone give a hint where my mistake is ?
1 Answer 1
Both XML and JSON contain data that is Unicode text. The XML declaration merely tells your XML parser how to decode the XML serialisation of that data. You wrote the serialisation by hand so to match the XML header, you had to encode to CP-1251.
The JSON standard states that all JSON should be encoded in either UTF-8, UTF-16 or UTF-32, with UTF-8 the standard; again, this is just the encoding for the serialisation.
Leave your data as Unicode, then encode that data to JSON with the json library; the library takes care of ensuring you get UTF-8 data (in Python 2), or gives you Unicode text (Python 3) that can be encoded to UTF-8 later. Your Javascript code will then decode the JSON again at which point you have Unicode text again:
There is no need whatsoever to send binary data over JSON here, you are sending text. If you Javascript code then generates the file, it is responsible for encoding to CP-1251, not your Python code.
If you must put binary data in a JSON payload, you’ll need to encode that payload to some form of text. Binary data (and CP-1251-encoded text is binary data) could be encoded in text as Base-64:
Base64 data is encoded to a bytestring containing only ASCII data, so decode it as ASCII for the JSON library, which expects text to be Unicode text.
Now you are sending binary data, wrapped in a Base64 text encoding, to the Javascript client, which now has to decode the Base64 if you need the binary payload there.
json_encode и кириллица
Надо больше спать!
Мальчишки, девчонки, низкий всем поклон! Больше отдыхайте и всё будет отлично!
У меня не работает пишет ошибку:
Notice: Use of undefined constant JSON_UNESCAPED_UNICODE — assumed ‘JSON_UNESCAPED_UNICODE’ in /var/www/support/MySQL_Datatables/process.php on line 8
Warning: json_encode() expects parameter 2 to be long
эм… я на 99,999 уверен, что у меня utf-8.
на всякий случай перед помещением в массив конвертил так:
iconv(‘cp1251’, ‘utf-8’, ‘значение’);
Действительно, null превратился в последовательность типа u0437u0430 и тд.
То есть снова не могу декодировать. Ещё одна проблема в том, что между encode и decode весь JSON сохраняется в БД и декодируется уже оттуда.
Чувствую, что истина где-то рядом, но туплю 🙁
Или изначально работайте c utf-8, но тогда вам скорее всего придется все скрипты переписать (потому что обычные строковые функции уже не подойдут), или заранее конвертируйте данные.
$ar = array(«name»=>’значение’);
$json=json_encode($ar);
mysql_connect(«localhost», «qwer», «qwer»);
mysql_select_db(«termito»);
mysql_query(‘set names utf8’);
$q=sprintf(«INSERT INTO `cin`(`info`) VALUES(‘%s’)», $json);
echo $q;
mysql_query($q);
mysql_connect(«localhost», «qwer», «qwer»);
mysql_select_db(«termito»);
mysql_query(‘set names utf8’);
$r = mysql_query(«select * from `company_info` WHERE `id`=».mysql_insert_id());
$r = mysql_fetch_array($r);
$a = json_decode($r[‘info’],true);
echo(($a[‘name’]));
/*на выходе упорно u0437u043du0430u0447u0435u043du0438u0435*/
Кириллица в json_encode
Функция json_encode кириллицу utf-8 кодирует в виде \u. . Как её заставить кодировать символы «как есть»?
Примечание: не используя второй параметр json_encode и mb-функции.
7 ответов 7
В PHP начиная с версии 5.4.0 появился флаг JSON_UNESCAPED_UNICODE и все стало намного проще:
Пришлось писать свою функцию. Надеюсь, не сильно накосячил?
в начале файла добавь
Указывать Content-Type свой, по ситуации
Предположу, что данные идут с базы данных. В таком случае при подключении к базе данных необходимо указать кодировку подключения — UTF-8.
Искал как решить проблему, в итоге заработало когда добавил к json_encode флаг — JSON_UNESCAPED_UNICODE и сменил кодировку при выводе
- Improved JSON extension: . Added new json_encode() option JSON_UNESCAPED_UNICODE. FR #53946. (Alexander, Gwynne)
Вот рекурсивная функция, которая может конвертировать в UTF-8 все строки в массиве и объекте:
Также json_last_error() может быть полезным в отладке json_encode()/json_encode() функций.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками json php или задайте свой вопрос.
Связанные
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.4.16.39093