如何使用JavaScript将字符转换为ASCII码?

例如:

从“\n”中得到10。


当前回答

如果你只有一个字符而不是字符串,你可以使用:

'\n'.charCodeAt();
'\n'.codePointAt();

省略0…

它曾经比'n'. charcodeat(0)慢得多,但我现在已经测试过了,我再也看不到任何区别了(带0和不带0执行了100亿次)。仅在Chrome和Firefox中测试了性能。

其他回答

为了支持来自ES6的所有UTF-16(也非bmp /补充字符),string.codePointAt()方法可用;

此方法是charCodeAt的改进版本,它只支持< 65536(216 -单个16位)的unicode码点。

您可以输入一个字符并使用此代码获取Ascii码

例如输入字符a 你得到Ascii码65

函数myFunction () { var str = . getelementbyid (id1); If (str.value=="") { str.focus (); 返回; } var a="ASCII码== > "; . getelementbyid(“演示”)。innerHTML = a + str.value.charCodeAt (0); } <p>检查ASCII码</p> < p > 输入任意字符: <input type="text" id="id1" name="text1" maxLength="1"> </br> < / p > <按钮onclick = " myFunction ()>获取ASCII码</按钮> < span style=" font - family:宋体;" > < / p >

JavaScript将字符串存储为UTF-16(双字节),所以如果你想忽略第二个字节,只需在0000000011111111(即255)上按位&操作符将其剥离:

'a'.charCodeAt(0) & 255 === 97; // because 'a' = 97 0 
'b'.charCodeAt(0) & 255 === 98; // because 'b' = 98 0 
'✓'.charCodeAt(0) & 255 === 19; // because '✓' = 19 39

正如其他人指出的那样,ASCII只包含128个字符(包括非打印字符)。为了向后兼容,Unicode将ASCII作为其前128个字符,但它还包括更多字符。

如果只获取整数形式的ASCII字符码,您可以执行以下操作:

function ascii_code (character) {
  
  // Get the decimal code
  let code = character.charCodeAt(0);

  // If the code is 0-127 (which are the ASCII codes,
  if (code < 128) {
    
    // Return the code obtained.
    return code;

  // If the code is 128 or greater (which are expanded Unicode characters),
  }else{

    // Return -1 so the user knows this isn't an ASCII character.
    return -1;
  };
};

如果你只寻找字符串中的ASCII字符(例如,slugified一个字符串),你可以这样做:

function ascii_out (str) {
  // Takes a string and removes non-ASCII characters.

  // For each character in the string,
  for (let i=0; i < str.length; i++) {

    // If the character is outside the first 128 characters (which are the ASCII
    // characters),
    if (str.charCodeAt(i) > 127) {

      // Remove this character and all others like it.
      str = str.replace(new RegExp(str[i],"g"),'');

      // Decrement the index, since you just removed the character you were on.
      i--;
    };
  };
  return str
};

来源

https://www.geeksforgeeks.org/ascii-vs-unicode/: ~:文本Unicode % 20 = % 20 % 20普遍% 20字符,编码% 20标准% 20 % 20电子% 20的沟通。 https://www.w3schools.com/jsref/jsref_charcodeat.asp

如果你只有一个字符而不是字符串,你可以使用:

'\n'.charCodeAt();
'\n'.codePointAt();

省略0…

它曾经比'n'. charcodeat(0)慢得多,但我现在已经测试过了,我再也看不到任何区别了(带0和不带0执行了100亿次)。仅在Chrome和Firefox中测试了性能。