在工作中,我遇到了一個問題,我們的應用程序的用戶正在接收帶有無效unicode字符(0xffff)的消息,根據標準,該消息不應該映射到符號。
作爲一個快速風靡的工作我做了以下內容:
badStr.replace(/\uffff/g, " ");
預期其中一期工程,並讓用戶繼續使用該應用程序,直到我們找到一個更好的解決方案。
但是,當我玩這個時,我隨機嘗試了一個「$$$$」的字符串替換,它以某種方式摺疊了「$$」。
你可以看看自己。嘗試在瀏覽器地址欄中粘貼以下行:
javascript: alert(String.fromCharCode(0xffff).replace(/\uffff/g, "@@@@"));
結果@@@@
但
javascript: alert(String.fromCharCode(0xffff).replace(/\uffff/g, "$$$$"));
結果$$
這實際上似乎是一任何字符串替換問題,$$$$作爲字符串替換。
兩個:
javascript: alert(String.fromCharCode(0x1234).replace(/\u1234/g, "$$$$"));
javascript: alert("hella".replace("h", "$$$$"));
結果在$$崩潰。
任何想法爲什麼字符串替換行爲這樣?
我不知道你的問題的答案,但這個角色來自哪裏呢?它如何進入你的消息系統? –
執行電子郵件。我猜測他們正在剪切和粘貼東西,使用多種utf編碼,並且不知何故它們以此結束。 – Gopherkhan