2009-11-05 10 views
9

Est-il possible de détecter des données binaires en JavaScript? Je souhaite pouvoir détecter les données binaires et les convertir en hexadécimal pour une meilleure lisibilité/débogage.Détecter les caractères non imprimables en JavaScript


Après une enquête plus approfondie, je me suis rendu compte que la détection des données binaires ne sont pas la bonne question, parce que les données binaires peuvent contenir des caractères réguliers et des caractères non-imprimables.

La question-réponse d'Outis (/ [\ x00- \ x1F] /) est vraiment la meilleure que nous pouvons faire pour tenter de détecter les caractères binaires.

Remarque: Vous devez supprimer les sauts de ligne et éventuellement d'autres caractères de votre séquence de chaînes ascii pour que la vérification fonctionne réellement.

+0

pour détecter où? –

Répondre

17

Si par "binaire", vous voulez dire "contient des caractères non-imprimables", essayez:

/[\x00-\x1F]/.test(data) 

Si les espaces sont considérés comme des données non-binaires, essayez:

/[\x00-\x08\x0E-\x1F]/.test(data) 

Si vous connaissez la chaîne est ASCII ou binaire, utilisez:

/[\x00-\x1F\x80-\xFF]/.test(data) 

ou:

/[\x00-\x08\x0E-\x1F\x80-\xFF]/.test(data) 
+0

Je pense que vous voulez dire 'regexp.test (data)'. En outre, le caractère de tabulation est imprimable. – pimvdb

+0

"non imprimable" au sens de la norme [POSIX Locale, §7.3.1] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_01) (qui est la base de les goûts de ['isprint'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/isprint.html)), car ce ne sont pas des caractères qui sont imprimés mais qui requièrent une action spéciale du processeur de texte. Vous avez raison de dire que l'OP peut vouloir considérer les espaces comme des données non binaires. En outre, l'argument et l'objet de 'test' ont été échangés. – outis

+1

J'avais besoin de Tab pour passer le test, donc j'utilise '/ [\ x00- \ x09 \ x0E- \ x1F] /' – Nathan

Questions connexes