2012-04-27 27 views
13

我正在解碼文本。我試圖找到字符的字符代碼,而不是將其誤認爲-,使用ASCII。我試過不成功。有人知道如何轉換它嗎?從維基什麼是' - '的ASCII字符碼?

+0

你是什麼意思'解碼這個字符'?源文本中使用了什麼編碼,以及結果中應該使用哪種編碼? – raina77ow 2012-04-27 20:54:05

+0

@ raina77ow:我嘗試在Ascii表中找到此字符的編號 – 2012-04-27 20:54:54

+0

它不在那裏;因此,它的代碼取決於使用什麼編碼。例如,在Latin-1的文本'mdash'表示用號碼151 – raina77ow 2012-04-27 20:57:57

回答

20

報價(Em dash

當實際的破折號是不可用的,因爲在ASCII字符集 - 雙(「 - 」)或三連字符減號(「---」 ) 用來。在Unicode中,em破折號是U + 2014(十進制8212)。

長破折號字符不是ASCII字符集的一部分。

+0

所以當我這樣做:'char check = s.charAt(0)',當s ='-'時,我會得到什麼?你是否說如果我會執行'int check = s.charAt(0)',我會得到8212? – 2012-04-27 20:57:45

+3

@AdamSh這取決於你用來做解碼。你沒有發佈任何代碼,所以很難說。通常,當解碼器遇到不能解碼的東西時,它會用問號替換它。 – vcsjones 2012-04-27 21:01:09

+0

您應該拋出一個異常,或者開始使用更大的整數,並返回8212 – Li0liQ 2012-04-27 21:31:04

5

被稱爲長劃線。它的字符代碼是\u2014。它不是ASCII字符,因此您不能使用ASCII字符集對其進行解碼,因爲它不在ASCII字符表中。您可能想要使用UTF8。

+0

JavaScript字符串已啓用Unicode,但在內部使用UCS-2而不是UTF-8。無論哪種方式,都不需要知道編碼來表示它,因爲您可以按照'\ u2014'的形式對照Unicode代碼點進行檢查。 – thomasrutter 2016-05-24 01:04:23

2

這個角色不能在ASCII存在,但只以Unicode,通常由UTF-8編碼。

在UTF-8,字符由2-或3-字節序列(或偶爾更長),其中沒有兩個或三個字節是一個有效的ASCII碼,其中所有的人都的ASCII範圍外編碼0至127

人們懷疑的是,以上只是部分地回答你的問題,但如果是這樣那麼這可能是因爲你的問題是,在不經意間,只有部分要求。有關更多詳細信息,可以使用更多細節擴展您的問題。