“—”的ASCII字符代码是什么?

45

我正在进行文字解码。 我试图找到ASCII编码中 字符的字符代码,注意不要与-混淆。我曾尝试过但没成功。 有人知道如何转换吗?


“decode this char” 是什么意思?源文本使用的是哪种编码,结果应该使用哪种编码? - raina77ow
@raina77ow:我试图在 ASCII 表中找到这个字符的编号。 - Adam Sh
1
它并不存在;因此,它的代码取决于使用的编码方式。例如,在Latin-1文本中,“mdash”用数字151表示。 - raina77ow
请参见https://dev59.com/vHRB5IYBdhLWcg3wa2m2。 - jveazey
1
这个字符不在ASCII范围内。 - tripulse
3
我总是回来这里复制这个字符。 - Luccas
8个回答

58

来自维基百科的引用 (Em dash)

当实际的破折号不可用时 -- 如在ASCII字符集中 -- 会使用双短线 ("--") 或三个连续的短横线 ("---")。在Unicode中,破折号是U + 2014(十进制值8212)。

破折号字符不属于ASCII字符集。


那么当我执行:char check = s.charAt(0),当s=时,我会得到什么?你是说如果我执行int check = s.charAt(0),我会得到8212吗? - Adam Sh
5
这取决于您用来进行解码的工具。由于您没有发布任何代码,所以很难说。通常,当解码器遇到无法解码的内容时,它会用一个问号替换它。 - vcsjones
你应该抛出一个异常或开始使用更大的整数并返回8212。 - Li0liQ
JavaScript字符串是Unicode编码的(即它们不仅限于ASCII),因此如果您执行s.charAt(0),那么您将得到破折号,这将等于s = '\u2014' - thomasrutter

18

被称为破折号(Em Dash),其字符代码是\u2014。它不是ASCII字符,因此您不能使用ASCII字符集对其进行解码,因为它不在ASCII字符表中。您可能想要使用UTF8。


JavaScript字符串支持Unicode,但内部使用的是UCS-2而不是UTF-8。无论哪种方式,都不需要知道编码来表示它,因为您可以通过\u2014形式检查其Unicode代码点。 - thomasrutter

10

对于带数字键盘的Windows电脑:

使用数字键盘输入Alt+0150(短横线),Alt+0151(长横线)或Alt+8722(减号)。


4
这个字符在ASCII中不存在,只存在于Unicode中,通常由UTF-8编码。
在UTF-8中,字符由2或3个字节的序列(有时更长)编码,其中没有两个或三个字节是有效的ASCII代码,它们都在ASCII范围0到127之外。
也许上述内容只部分回答了您的问题,但如果是这样,那可能是因为您的问题只被部分问到了。如需更多详细信息,请提出更具体的问题。

3
字符不属于ASCII字符集。
但是,如果您想将其转换为其他格式(如U + hex),可以使用此在线工具。将您的字符放入第一个绿色框中,然后单击“转换”(在框上方)。
进一步下面,您会发现许多不同的代码,包括U + hex

U+2014


如果链接失效,请随时编辑此答案或留言以便我找到替代品。

2
Alt + 0151似乎能解决问题 - 也许并非在所有键盘上都适用。

0
这是150。你可以用普通的连字符Chr(45)替换Chr(150)。

-5

alt-196 - 在按住“Alt”键的同时,在数字小键盘上键入196,然后松开“Alt”键


3
@MadDot,你的答案没有涉及到问题的上下文,问题是关于字符代码而不是如何输入这个字符。此外,你描述的字符是U+2500,而问题是关于U+2014。提示:在网页浏览器中按F12并粘贴到控制台"—".codePointAt(0).toString(16) - Tom Blodget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接