簡體   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