为什么这个字符的ASCII表示返回为226 128 153?

3

我正在使用这个工具进行操作:

http://www.unit-conversion.info/texttools/ascii/

当我尝试使用这个字符时:

'

我看到了值039,可以从http://www.asciitable.com验证。

但我还很好奇:

在同一工具中,此字符将返回:226 128 153

但据我所知,ASCII码是8位(甚至7位...)

这里的226 128 153是什么意思?


2
该字符不是ASCII字符。 - Edwin Dalorzo
4个回答

6
你所拥有的字符是U+2019 RIGHT SINGLE QUOTATION MARK,在大多数情况下,这也是用于表示撇号的排版正确方式。这个网站所做的事情是使用UTF-8表示字符。正如你在链接页面中所看到的,该字符被编码为三个字节,16进制为0xE2 0x80 0x99,10进制为226 128 153。该页面使用UTF-8而不是ASCII的原因很简单。首先,ASCII是UTF-8的子集。第二,UTF-8支持整个Unicode。所以,如果可以使用UTF-8,很少有理由使用ASCII。

2
我有同样的问题(试图将字符串转换为大写,遇到了这个字符,它“破坏”了许多将带有特殊字符的字符串转换为大写的方法。
我使用了这个解决方案:
    $text = preg_replace("/[`‛′’‘]/u", "'", $text);

这将把它转换为普通逗号,然后你可以对其执行正常的 PHP 函数。该段文字来源于此处:https://dev59.com/iGoy5IYBdhLWcg3wFqJT#24925209

1
第一个字符是ASCII,代码为39。第二个字符是UNICODE字符,代码为8217。
请参见UNICODE字符表,特别是此字符
要获取更多信息,请阅读UNICODE文章。

$(document).ready(function(){
  $('#res').html("’".charCodeAt(0));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='res'><div>


0

看起来那是UTF16表示法。可能该网站正在使用Javascript将字符转换为其代码表示形式,例如"’".charCodeAt(0);


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