Vorrei rimuovere tutti i caratteri UTF-8 non validi da una stringa in JavaScript. Ho provato con questo JavaScript:Come rimuovere caratteri UTF-8 non validi da una stringa JavaScript?
strTest = strTest.replace(/([\x00-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3})|./g, "$1");
Sembra che la convalida regex UTF-8 descritto qui (link rimosso) è più completo e ho adattato allo stesso modo come:
strTest = strTest.replace(/([\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})|./g, "$1");
Entrambi questi pezzi di codice sembrano essere consentendo valido UTF-8 a, ma non sono filtrando quasi nessuna delle cattive caratteri UTF-8 dal mio dati di test: UTF-8 decoder capability and stress test. O i caratteri non validi vengono visualizzati invariati o sembrano essere stati rimossi alcuni dei loro byte creando un nuovo carattere non valido.
Non ho molta familiarità con lo standard UTF-8 o con multibyte in JavaScript, quindi non sono sicuro di non rappresentare correttamente l'UTF-8 nella regex o se sto applicando l'espressione regolare di regex in JavaScript.
Modifica: aggiunta la bandiera globale alla mia espressione regolare per commento di Tomalak - tuttavia questo non funziona ancora per me. Sto abbandonando lo fare sul lato client per commento di Bobince.
collegamenti mancanti: Link 1 - http: // stackoverflow.com/questions/1401317/remove-non-uft8-characters-from-string link 2 - http://www.w3.org/International/questions/qa-forms-utf-8 –