Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проблема с кодировками при экспорте талицы в Excel (https://javascript.ru/forum/events/36341-problema-s-kodirovkami-pri-ehksporte-talicy-v-excel.html)

damekkoneko 12.03.2013 16:53

Проблема с кодировками при экспорте талицы в Excel
 
Здравствуйте!
Прошу вашей помощи! Мозг уже кипит, да и рабочий день заканчивается, а покою все нет.

Имееся такая штука:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head> 
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
<body>

 <h2>Заявка на смену пароля:</h2>
 
 <table id="123" width="65%" style="border-collapse: collapse; border: 1px solid #FF0077;">
    <tr><td>
       Для смены пароля обращяться: 
    </td>
    <td>
       Туда и сюда....
    </td>
    </tr>
  </table>

<script>
     var table= document.getElementById("123");
     var html = table.outerHTML;
   window.open('data:application/vnd.ms-excel; UNICODE,' + encodeURIComponent(html));
</script>

</body>
</html>


Сохранение динамической табличики у клиента в *.xls файлик с диалогом. Все прекрасно работает, но проблема с кодировкой - русский текст закорючками.

Актив Х мен я не устраивет никакким местом, мне достаточно этого диалога, что нужно запихать еще при создании окна в
window.open('data:application/vnd.ms-excel; UTF-8,' + encodeURIComponent(html));
,чтоб ы все было нормально?

Спасибо!

danik.js 12.03.2013 19:49

Цитата:

Сообщение от damekkoneko
Все прекрасно работает, но проблема с кодировкой - русский текст закорючками.

Видимо Excel не переваривает UTF-8.
В файл все корректно записывается.
И кстати, содержимое не соответствует расшинению файла, о чем Excel и предупреждает. Причем очень грозно, так что и не сразу решишься открыть файл)

damekkoneko 12.03.2013 21:35

Цитата:

Сообщение от danik.js (Сообщение 240253)
Видимо Excel не переваривает UTF-8.
В файл все корректно записывается.
И кстати, содержимое не соответствует расшинению файла, о чем Excel и предупреждает. Причем очень грозно, так что и не сразу решишься открыть файл)

Странно, если пересохраниьт готовый файлик в блокноте с кодировкой utf8, то все нормально.

А сохраняет эксель не в хлс, в какой-то хмл, но это другой вопрос, меня устроит, что угодно, лишь бы табличка с миниимальными стиялми, как на страничке.

Просто, куда бы еще присунуть упоминание о кодировке в момент открытия новой страницы?

danik.js 13.03.2013 06:01

Цитата:

Сообщение от damekkoneko
А сохраняет эксель не в хлс, в какой-то хмл

Родной формат - xlsx/xls, это бинарные форматы.

Цитата:

Сообщение от damekkoneko
Странно, если пересохраниьт готовый файлик в блокноте с кодировкой utf8, то все нормально.

Он и так в utf-8, просто без BOM-метки. Значит нужно ставить ее:
'data:application/vnd.ms-excel,' + '\uFEFF' + encodeURIComponent(html)

Цитата:

Сообщение от damekkoneko
data:application/vnd.ms-excel; UTF-8

Нафига тут UTF-8 втыкнуто ?

damekkoneko 13.03.2013 06:19

Цитата:

Сообщение от danik.js (Сообщение 240306)
Родной формат - xlsx/xls, это бинарные форматы.


Он и так в utf-8, просто без BOM-метки. Значит нужно ставить ее:
'data:application/vnd.ms-excel,' + '\uFEFF' + encodeURIComponent(html)


Нафига тут UTF-8 втыкнуто ?

Не, не выкинуто, просто в этой версии не проставлено, я че туда только не ставил и утф и цп1251 и всякую другую нечисть.

А так,
'data:application/vnd.ms-excel,' + '\uFEFF' + encodeURIComponent(html)
, заинтриовало, щас приду на работу попробую :)
:):):)

Цитата:

Сообщение от danik.js (Сообщение 240306)
Родной формат - xlsx/xls, это бинарные форматы.

Вот меня и напрягло, когда я открылвы ходящий xls файлик блокнотом, а там тэговая структура по типу rtf или xml.

damekkoneko 13.03.2013 09:03

Цитата:

Сообщение от danik.js (Сообщение 240306)
Он и так в utf-8, просто без BOM-метки. Значит нужно ставить ее:
'data:application/vnd.ms-excel,' + '\uFEFF' + encodeURIComponent(html)

C \uFEFF заработало. Кодировку эксель стал расчухивать и кракозябры ушли.

Теперь осталось решить вопрос формирования нормального *.xls/

Спасибо огромное за помощь :)

Дидар 03.02.2015 14:06

Спасибо помогло!
 
Спасибо помогло!


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