繁体   English   中英

我们可以在Javascript中将Unicode转换为ASCII吗? charCodeAt()仅适用于Unicode?

[英]Can we convert Unicode to ASCII in Javascript? charCodeAt() is only for Unicode?

我们必须为我们的老师做一个小程序,以获取Javascript中任何值的ASCII代码。

我搜索和研究过,但似乎没有方法可以这样做。 我发现:

charCodeAt()

http://www.hacksparrow.com/get-ascii-value-of-character-convert-ascii-to-character-in-javascript.html

返回Unicode值,但不返回ASCII。

我在这个论坛中读到,ASCII值与已经具有ASCII值的ASCII字符的Unicode值相同:

Unicode和Ascii字符是否相同?

但似乎并非总是如此,例如扩展的ASCII字符。 例如:

var myCaracter = "├";

var n = myCaracter.charCodeAt(0);

document.write (n);

该字符的ASCII值为195,但程序返回226(Unicode值)。

我无法找到要从一个转换为另一个的模式,因此:

¿我们可以从Unicode获取ASCII,还是应该寻找其他方式?

谢谢!

ASCII字符仅使用7位,值为0到127(十六进制为00到7F)。 他们包括:

  • 控制字符(0到31,以及127)
  • 数字(0到9,编码48到57)
  • 大写字母(65到90)
  • 小写字母(97到122)
  • 有限数量的标点符号和其他符号。

ASCII字符是Unicode的子集(“C0控件和基本拉丁语块”),它们在UTF-8中编码完全相同。 ASCII代码“A”(65或0x41)与“A”(U + 0041)的Unicode代码点相同。

您考虑的字符( )不是ASCII。 它是许多不同字符集/代码页的一部分,它可能有不同的数值/编码,但绝对不是ASCII。

这些字符甚至没有在最常见的ASCII 8位扩展中定义,称为ISO-8859- *。 它是代码页437(在MS-DOS上使用)的一部分,其数字代码是0xC3(195)。 但这绝对不是ASCII。

该字符的Unicode代码点是U + 251C(十进制9500),这是此字符的charCodeAt的返回值,而不是226。

你可能得到226,因为你正在解释一个尚未被识别的UTF-8字符串。

今天我的老师道歉了,因为告诉我们charCodeAt()获取ASCII码是错误的,这可能是她的错。 她希望我们使用这种方法,就像雷克萨斯提出的@Rad一样。

所以,它在我的练习中不是必需的,但作为一种练习并帮助每个可能需要它的人,我所做的是为代码添加一个小的验证,以避免用户输入大于或等于128,其中charCodeAt()的问题似乎开始。

也许这不是一个聪明的解决方案,而且在我的练习中肯定没有必要,而且它使得一些必要的角色用另一种语言(例如德语或ñ西班牙语)被禁止......但我认为它是好的发布代码并让使用它的每个人选择是否使用此验证。

感谢所有帮助过我的人。

定义功能:

function validate(text)
{

    var isValid=false;

    var i=0;


    if(text != null && text.length>0 && text !='' )
    {
        isValid=true;

        for (i=0;i<text.length;++i)/*this is not necessary, but I did*/
        {
            if(text.charCodeAt(i)>=128)
            {
                isValid=false;
            }
        }

    }

    return isValid;

}

使用功能

var isValid=false;

var position=0; 

while(isValid==false)
{
    text=prompt("Enter your text");

    isValid=validate(text);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM