0

对于 100% 的客户端,我希望向我的用户提供一个文本文件(例如 ics 日历)。

我设法处理了整个代码,但下载文件是 ISO 格式,我希望它是 utf8 格式(因为 ical/ics 字符集必须是 utf8 格式)。

我想念什么来强制使用 utf8 ?我放了 META 和字符集,但下载的文件仍然是 ISO 字符集,我不明白为什么。

这是我要测试的小样本,您可以复制/粘贴到一个新的文本文件中来运行它:

<html>
<head>
<meta charset="utf-8">
<META http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<div><a id="mylinkICS" download='my_own_agenda' class='mylinkICS'> [ CLICK HERE TO DOWLOAD your agenda ]</a></div>
</body>

<script>
var mybigstring="BEGIN:VEVENT\nUID:me@google.com\nDTSTAMP:20120315T170000Z\nATTENDEE;CN=My Self ;RSVP=TRUE:MAILTO:me@gmail.com\nORGANIZER;CN=Me:MAILTO::me@gmail.com
\nDTSTART:9:30am\nDTEND:10:30am\nSUMMARY:étudiant accentué \nEND:VEVENT";

var icsMSG="BEGIN:VCALENDAR\nVERSION:2.0\nX-WR-CALNAME:EDT test\nNAME:Emploi du temps test\nPRODID:ENT-test\nCALSCALE:GREGORIAN\nMETHOD:PUBLISH\nX-WR-TIMEZONE:Europe/Paris\nX-WR-CALDESC:description agenda\n";

icsMSG=icsMSG + mybigstring;
icsMSG=icsMSG + "END:VCALENDAR";
icsMSG="data:text/calendar;charset=utf8," + escape(icsMSG);
//jquery version $(".mylinkICS").attr("href", icsMSG);
document.getElementById("mylinkICS").href=icsMSG;  //dom version
</script>

</html>

在我的内容(存储在 mybigstring var)中,我添加了重音词 "étudiant accentué" 。所以当你下载文件时,你可以看到重音没有以 utf8 显示,因为文件是 ISO .....我不明白为什么....

4

1 回答 1

0

由于时间过去了,我找到了答案:escape() function send iso charset 所以我使用了 encodeURIComponent

我换了

icsMSG="data:text/calendar;charset=utf8," + escape(icsMSG);

经过

icsMSG="data:text/calendar;charset=utf8," + encodeURIComponent(icsMSG);

现在,流是 utf8 并且可以很好地通过这种方式发布 ics ical。

问题解决了!

于 2022-02-24T08:21:24.437 回答