J'écris un fichier local à l'aide de JavaScript et j'utilise, c'est-à-dire pour la même chose.
Mon code est comme suit: P>
function savefile( f,g){ var w = window.frames.w; if( !w ) { w = document.createElement( 'iframe' ); w.id = 'w'; w.style.display = 'none'; document.body.insertBefore( w ); w = window.frames.w; if( !w ) { w = window.open( '', '_temp', 'width=100,height=100' ); if( !w ) { window.alert( 'Sorry, could not create file.' ); return false; } } } var d = w.document; d.open( 'text/xml', 'replace'); d.charset = "UTF-8"; d.write(JWPFormToHTML(f)); d.close(); var name= g.filename.value; if( d.execCommand( 'SaveAs', false , name ) ) { g.filename.value=name; //document.getElementById("filename").value=""; alert('File has been saved.' ); } else { alert( 'The file has not been saved.\nIs there a problem?' ); } w.close(); return false; }
4 Réponses :
Très probablement, vous avez un problème avec le fait que Windows code typiquement Unicode à UTF-16 et le navigateur ne se soucie pas de prendre en compte toute alternative.
Vous pouvez aller à la route ActiveX, le fichier FilesSystemObject prend en charge un indicateur de format Unicode pour les flux de texte, mais je parie qu'il est le même codage. L'objet Adodb.stream contient toutefois une propriété Charset pouvant être réglée sur une variété de formats, y compris UTF-8 P>
http://msdn.microsoft.com/en-us/library/ms526296 (v = EXCHG.10) .aspx P>
En dehors de cela, je pense que votre meilleur pari serait d'écrire un BHO ou de modifier les spécifications. Vous aurez bien sûr besoin d'autorisations plus élevées modifiées manuellement dans le navigateur, mais peut-être que vous êtes chanceux et c'est une application intranet: d p> (* Ce code n'a pas été testé, Par exemple) uniquement) P> p>
Je pense que vous créez HTA a>? p>
pour enregistrer le fichier comme UTF8 p>
Les deux liens suggéré ne m'ont pas aidé. La seconde semble utile mais elle a besoin d'un chemin et ne montrera pas d'enregistrement en tant que boîte de dialogue :( qui est la principale exigence du code
J'ai fait quelque chose comme ceci pour un éditeur de texte. La commande Exec est exclusive (à IE). Il permet à l'utilisateur final d'enregistrer la page Web actuelle via une boîte de dialogue. La balise Meta n'a aucun effet dans ce domaine. Si vous souhaitez que le fichier soit enregistré en tant qu'UF-8,
Si vous fournissez une source de sources HTML qui démontre le problème dans IE, il peut peut-être être résolu.
Il n'a pas d'impact préalable de l'UTF-8 pré-sélectionné n'a aucun codage mentionné là-bas
Notepad ouvert, collez le code suivant et enregistrez le fichier avec la liste
<input type="button"
value="Save As UTF-8 file"
onclick="document.execCommand('SaveAs',false,'somename.html');" />
essayé et ça marche bien ... mais l'extrait de code que j'ai donné n'a pas enregistré la page normale de la page et génère une page mannequin et tente de l'enregistrer, alors existe-t-il un moyen de faire de même s'il vous plaît se référer le code complet prévu ci-dessus
Postez le code complet avec des balises HTML. Sinon, il est difficile de distinguer quels éléments vous faites référence.
IE vous permet d'enregistrer sur la machine locale via JavaScript? : P
@ALEX: IE + ActiveX: Beaucoup de spectres (non-responsables) ;-)
Il permet d'enfiler beaucoup de choses à l'aide de X ... qui sont tellement compliqués en soi et ne sont pas pris en charge sur d'autres navigateurs: (... rend la vie des développeurs horribles: p
La page Web de l'OMI ne doit jamais écrire dans le fichier sur la machine locale. C'est comme si vous invitez un invité à votre maison et il commence à le décorer. Donc, le problème commence par la non-norme et la mauvaise condition de commencer.
C'est l'exigence fonctionnelle de notre projet et doit être effectuée ... il ne sera pas fait à partir d'un serveur .... Il y aura un fichier HTML local qui générera un autre fichier HTM ..
Je ne suis toujours pas capable de faire cela ... mais a réussi à convertir le fichier UTF-16 à lire comme UTF-8 s'il vous plaît suivre le LIEN
Je sens ta douleur, Varun. Je suppose qu'il est trop tard pour dire au client que cette solution va être un enfer à maintenir et à ouvrir un énorme trou de sécurité? J'exhorte fortement quiconque qui fait face à ces types de demandes / exigences de retourner au client avec une grosse "pourquoi?" et expliquer les risques, au début du processus. Avec tout le respect de vous qui êtes appelé quand il est trop tard pour cela.
@Niklas - Merci d'avoir compris la douleur .. Mais la chose est qu'il devrait y avoir une façon de le faire. Ifound ceci 1 (code ci-dessus) mais il écrit dans le format UTF-16 et non dans UTF-8, vous devez donc écrire quelque chose qui peut écrire dans UTF-8
@Varun - Votre client se lie à un navigateur particulier pour la vie de l'application faisant cela. Très probablement, ils oublieront, obtenez une mise à niveau, cassez l'application, puis trouvez qu'ils n'ont pas de soutien ni la capacité de poursuivre le processus d'entreprise. Cela serait mieux atteint avec une sorte de plugin ou de stockage simple serveur et de téléchargement. Parfois, il va de dire non.