JavaScript字符轉Unicode,順便說句:GitHub的Oh no頁面很亮


遇到個輸不出來的字符怎么辦,因為輸不出來的字符一般又是不常見大多數時候連名字也喊不出來的,所以想問百度谷歌大大也不大可能。如果是小白用戶肯定會去把輸入法軟盤打開切換到其他鍵盤一個一個找。即使有搜狗輸入法這樣強大的特殊字符集的匯總,也還是要找啊。

話說那天在GitHub上折騰的時候不小心整出個錯誤頁面(你們還是打消重現的想法吧,很難),一看好別致,我去,感嘆與問號的合體,我去這是什么符號‽

 

啥也表說了興許以后在自己的設計中用得上,於是就copy了下來。

后來一想哎不對啊,我不能打出來,我要使用的時候必需通過復制。這個不太保險。如果知道他的unicode代碼,那就可以在HTML,JavaScript中隨便使用了。

所以現在需要這么一個函數,它能把字符轉為unicode碼。

經查,JavaScript內建函數里有把unicode轉字符的String.fromCharCode()。

剛好也有把字符轉unicode轉字符的String.charCodeAt()

但注意這個String.charCodeAt()直接轉出來的數字為10進制的,無法在代碼中像這樣正常使用"\uXXXX"。

所以需要調用toString(16),注意指定基數為16。

於是得到以下輔助函數:

function convert2Unicode(char) {
  return "\\u" + char.charCodeAt(0).toString(16);
}

 

convert2Unicode("‽")->"\u203D"

 

於是就可以這樣在JS中使用了:alert("\u203D");

 

進階

進一步,可以想到除了將一個字符轉為unicode表示外,稍微改造下就可以把一個字符串進行轉換了。

 

function toUnicode(theString) {
  var unicodeString = '';
  for (var i = 0; i < theString.length; i++) {
    var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase();
    while (theUnicode.length < 4) {
      theUnicode = '0' + theUnicode;
    }
    theUnicode = '\\u' + theUnicode;
    unicodeString += theUnicode;
  }
  return unicodeString;
}

 

 

Reference:http://buildingonmud.blogspot.com/2009/06/convert-string-to-unicode-in-javascript.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM