Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Hегулярное выражение, цикл, json (https://javascript.ru/forum/misc/55944-hegulyarnoe-vyrazhenie-cikl-json.html)

kostyanet 22.05.2015 17:34

Потому что 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 - эквипенисуально. Екзель - мастдай.

laimas 22.05.2015 18:29

Цитата:

Сообщение от kostyanet
Потому что json_encode(), применительно к пхп, работает только с юникодом.

Не в иникоде должны быть данные, а в UTF-8.

Aetae 22.05.2015 23:03

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>


Часовой пояс GMT +3, время: 06:45.