Spécification de l'encodage blob dans Google Chrome
Le code suivant (vendeur normalisée) fonctionne parfaitement bien et affiche "➀➁➂ Test" dans Firefox 8, mais affiche "➀âžâž "Test" dans Google Chrome. Est-il possible de préserver l'encodage de gouttes dans Google Chrome court de l'écriture d'un fichier dans un dossier temporaire du système de fichiers en utilisant le système de fichiers de l'API?
var bb = new BlobBuilder;
bb.append("➀➁➂ Test");
var b = bb.getBlob("text/plain;charset=UTF-8");
var url = URL.createObjectURL(b);
open(url);
source d'informationauteur Eli Grey
Vous devez vous connecter pour publier un commentaire.
Gecko (Firefox), WebKit (Safari, Chrome) et de l'Opéra de soutien de la non-standard
btoa
fonction d'encodage d'une chaîne de caractères en base 64. Afin d'obtenir une base de 64 chaîne de caractères contenant une chaîne de caractères UTF-8, vous devez utiliser leencodeURIComponent
-unescape
truc.encodeURIComponent
encode une chaîne en UTF-8 URL maisunescape
décode chaque%xx
comme un seul caractère.btoa
s'attend à une chaîne binaire de tout codage que vous voulez.Bien sûr, cela ne fonctionne pas dans IE, mais je pense que IE 10 soutiendra la
Blob
-API. Qui sait comment il va gérer les codages.PS: IE ne semble pas être en mesure de
window.open
de données:-les url, et il serait ridicule petite limitation de longueur d'url, de toute façon.PPS: Cela fonctionne pour moi sur Chrome:
Le problème, c'est la page par défaut d'encodage pour les nouveaux onglets dans Chrome. Lorsque la nouvelle fenêtre s'ouvre (après
window.open(url)
) choisissez Affichage > Encodage > Unicode à partir du menu google Chrome. Cela a changé le texte affiché à l'écran de "➀âžâž "Test" pour "➀➁➂ Test" pour moi dans Chrome 13.Si vous voulez une solution qui vous permettra d'ouvrir gouttes dans de nouvelles fenêtres quel que soit le codage par défaut, vous pouvez compter sur le fait qu'un document dans un iframe héritera de la mère d'encodage du document quand il n'est pas explicitement spécifier son propre codage. Ainsi, vous pouvez ouvrir une fenêtre avec un vide document HTML servi avec un
Content-Type:text/html; charset=utf-8
en-tête, puis ajouter un iframe pour le corps avec lesrc
attribut de l'objet blob URL.