Comment convertir des grandes chaînes UTF-8 en ASCII?
J'ai besoin de convertir les grandes chaînes UTF-8 en ASCII. Il doit être réversible, et, idéalement, une rapide/léger algorithme.
Comment puis-je faire cela? J'ai besoin de la source code (à l'aide de boucles) ou de la JavaScript code. (ne doit pas être dépendante sur toute plate-forme/cadre/bibliothèque)
Edit: je comprends que la représentation ASCII n'aura pas l'air correct et serait plus grand (en octets) de son UTF-8 homologue, depuis son une forme codée de l'UTF-8 d'origine.
im confus par vos modifications. ça commence à ressembler à ce que vous avez réellement à faire est de l'encodage de l'url. est ce que le droit?
Je n'ai pas downvote vous. Et je ne se soucient pas le format binaire de l'UTF-8.
Si je ne savais pas ce que je demandais, je n'ai même pas eu quelques réponses correctes. (comme Échappant/Base64)
Vous devriez envisager d'aller avec David réponse -
Jeremy, jetez un oeil à ce que les gens sont de commenter et de mettre à jour votre question, actuellement, le titre et la description sont très mauvais. Sinon, vous continuerez à obtenir downvotes des autres.
Je n'ai pas downvote vous. Et je ne se soucient pas le format binaire de l'UTF-8.
Si je ne savais pas ce que je demandais, je n'ai même pas eu quelques réponses correctes. (comme Échappant/Base64)
Vous devriez envisager d'aller avec David réponse -
endoceURI()
/decodeURI()
sont mieux adaptés pour résoudre votre problème de quote()
/eval()
Jeremy, jetez un oeil à ce que les gens sont de commenter et de mettre à jour votre question, actuellement, le titre et la description sont très mauvais. Sinon, vous continuerez à obtenir downvotes des autres.
OriginalL'auteur Robinicks | 2009-05-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la table ASCII version de Douglas Crockford de l'json2.js fonction de citation. Ce qui devrait ressembler à ceci:
Cela produira un ASCII valides uniquement, javascript-cité de la chaîne d'entrée
par exemple
quote("Doppelgänger!")
sera "Doppelg\u00e4nger!"Pour revenir à l'encodage, vous pouvez simplement eval le résultat
surtout parce que vous n'avez pas besoin de mettre en œuvre quoi que ce soit pour le retour et il sera assez rapide. Vous pourriez tout aussi bien utiliser une regex basé vulgaire méthode très semblable à la fonction de citation.
.. ou vous pourrait protéger eval en fonction vulgaire avec la regex de validation comme json2.js pour compléter JSON.
Notez que, à strictement parler, ce n'est pas "la conversion en ASCII". Vous êtes en fait la mise en œuvre de votre propre schéma de codage sur le dessus de l'ASCII. Cela peut être tout à fait ok pour les exigences (et il semble être pour vous), mais ce n'est pas juste un simple "conversion ASCII".
au lieu de eval(codée), vous pouvez utiliser
JSON.parse(encoded)
(qui est similaire sous les couvertures, mais plus sûr)OriginalL'auteur fforw
Toute chaîne UTF-8 qui est réversible convertible en ASCII est déjà ASCII.
UTF-8 peut représenter n'importe quel caractère unicode en ASCII ne peut pas.
Puis l'état de votre question moins sneakly! "UTF-8 ASCII conversion" sonne comme un codage de caractères problème de conversion, tout ce que vous voulez vraiment est un moyen de représenter des Unicode (ce n'est pas le même que l'UTF-8) caractères en utilisant le jeu de caractères ASCII connus et d'un caractère d'échappement de la syntaxe.
C'est l'une des idées fausses les plus courantes sur UTF-8. UTF-8 et UTF-16 ont en fait variable bit longueurs et soit on peut représenter n'importe quel caractère unicode. en.wikipedia.org/wiki/UTF-8
Je suis corrigé! (Précédent commentaire supprimé.)
OriginalL'auteur Neall
Comme d'autres l'ont dit, vous ne pouvez pas convertir en UTF-8 text/plain en ASCII text/plain, sans abandon de données.
Vous pouvez convertir en UTF-8 text/plain en ASCII someother/format. Par exemple, le HTML permet à n'importe quel caractère en UTF-8, représente dans un fichier de données ASCII à l'aide de références de caractère.
Si nous continuons avec l'exemple, en JavaScript, charCodeAt pourrait aider à la conversion d'une chaîne à une représentation de celui-ci à l'aide de caractères HTML références.
Une autre approche est prise par Url, et mis en œuvre en JS comme encodeURIComponent.
OriginalL'auteur Quentin
Votre exigence est assez étrange.
La conversion UTF-8 en ASCII serait de perdre toutes les informations sur Unicode codepoints > 127 (c'est à dire tout ce qui n'est pas en ASCII).
Vous pouvez cependant essayer d'encoder vos données Unicode (peu importe la source de l'encodage) dans un codage compatible ASCII, tels que UTF-7. Cela signifie que les données produites pourraient légalement être interprété comme l'ASCII, mais il est vraiment UTF-7.
Bonne idée de l'UTF-7.
il peut être sans perte, mais alors vous n'êtes plus seulement de "conversion ASCII", vous êtes alors la conversion de certains schéma de codage mis en œuvre sur le dessus du jeu de caractères ASCII ...
OriginalL'auteur Joachim Sauer
Si la chaîne est codé en UTF-8, ce n'est pas une chaîne. C'est des données binaires, et si vous voulez représenter des données binaires et ASCII, vous devez la formater en chaîne de caractères qui peut être représentée en utilisant le peu de jeu de caractères ASCII.
Une façon est d'utiliser l'encodage base 64 (exemple en C#):
Si vous voulez la chaîne de caractères codés comme des données ASCII:
OriginalL'auteur Guffa
Voulez-vous bande de tous les caractères non ascii (slash remplacer par des '?', etc), ou pour stocker des points de code Unicode dans un non système unicode?
Première peut être fait dans une boucle de vérification pour les valeurs > 128 et de les remplacer.
Si vous ne souhaitez pas utiliser "toute plate-forme/cadre/bibliothèque", puis vous aurez besoin d'écrire votre propre encodeur. Sinon, je venais de l'utilisation de JQuery .html();
OriginalL'auteur Fowl
Il est impossible de convertir une chaîne UTF-8 en ASCII, mais il est possible de encoder Unicode comme compatible ASCII chaîne.
Probablement que vous souhaitez utiliser Punycode - c'est déjà un standard de codage Unicode qui encode tous les caractères Unicode en ASCII. Pour que le code JavaScript cochez cette question
Merci d'éditer votre question, le titre et la description afin d'empêcher les autres de vers le bas-droit de vote - ne pas utiliser le terme de conversion, l'utilisation de l'encodage.
OriginalL'auteur sorin
Voici une fonction pour convertir en UTF8 accents ASCII Accents (àéèî etc)
Si il y a un accent dans la chaîne, il est converti %239 par exemple
Puis de l'autre côté, j'ai analyser la chaîne et je sais quand il y a un accent et qu'est-ce que les caractères ASCII dans le fichier.
Je l'ai utilisé dans le logiciel javascript pour envoyer des données à un microcontrôleur qui fonctionne en ASCII.
OriginalL'auteur Francois Girard
De mise en œuvre de la
quote()
fonction peut faire ce que vous voulez.Ma version peuvent être trouvés ici
Vous pouvez utiliser
eval()
à l'inverse de l'encodage:pas vraiment la même chose, de mise en œuvre différente; si j'avais vu fforw réponse avant de poster la mienne, je n'aurais pas gêné; ma version a un peu plus d'options (choix entre guillemets simples ou doubles, éventuellement ne pas échapper les caractères non-ascii), mais plus vraisemblablement, il sera plus lent
Lien mort -----
OriginalL'auteur Christoph