Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.05.2015, 17:34
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Потому что json_encode(), применительно к пхп, работает только с юникодом. Поэтому те, кто не удосужился еще избавиться от виндовой кодировки и колхозят жисоны конкатенацией и косячат как видите.

Кстати, я как-то потратил полдня пытаясь наладить импорт-экспорт csv по юникоду. Х нанэ. Екзель utf-8 не понимает в принципе, ему надо нормальный юникод, а php когда делает csv в нормальном юникоде - глючит на кириллице. Пришлось забить и конвертить туда-сюда.

В смысле

fputcsv($handle,array_map(function($s) use($encoding){return mb_convert_encoding($s,$encoding);},$row),$delimiter);


fputcsv не ескепит кириллицу если в $encoding воткнуть ключ нормального юникода. Я уже забыл как он называется, пробовал и big и little endian - эквипенисуально. Екзель - мастдай.

Последний раз редактировалось kostyanet, 22.05.2015 в 17:39.
Ответить с цитированием
  #12 (permalink)  
Старый 22.05.2015, 18:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от kostyanet
Потому что json_encode(), применительно к пхп, работает только с юникодом.
Не в иникоде должны быть данные, а в UTF-8.
Ответить с цитированием
  #13 (permalink)  
Старый 22.05.2015, 23:03
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

var json = pseudojson.replace(/(:\s*")(.+?)("\s*[\]},])/g, function(a,b,c,d){
    return b + c.replace(/"/g,'\\"') + d
});
Только вам не поможет. Ваша "колхозная" функция ещё и скобочки забывает.

kostyanet, нормально utf8 он понимает, весь секрет в обязательном наличии BOM.)
<script>document.write(
'<a href="data:application/vnd.ms-excel;utf8,', encodeURIComponent('1; Фэйл\n2; =('), '" download="noBOM.csv">noBOM</a>', '<br>',
'<a href="data:application/vnd.ms-excel;utf8,', encodeURIComponent('\ufeff1; Вин\n2; =)'), '" download="BOM.csv">BOM</a>'
)</script>
__________________
29375, 35

Последний раз редактировалось Aetae, 22.05.2015 в 23:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу распарсить JSON. gorenie jQuery 3 29.11.2013 22:26
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 14:30
Проблемы с jqGrid и JSON massacra_panda Библиотеки/Тулкиты/Фреймворки 1 08.10.2012 16:44
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10