为什么此字符的ASCII表示形式返回226 128 153?

时间:2015-02-02 20:21:50

标签: encoding character-encoding char ascii

所以我正在玩这个工具:

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

当我尝试这个角色时:

'

我看到值 039 ,可以通过以下方式验证:http://www.asciitable.com

但我很好奇:

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

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

226 128 153 在这里是什么?

4 个答案:

答案 0 :(得分:4)

你拥有的角色是U+2019 RIGHT SINGLE QUOTATION MARK,这也是在大多数位置代表撇号的印刷方式。

网站的作用是代表UTF-8中的字符。正如您在我链接的页面中看到的,此字符编码为三个字节,十六进制为0xE2 0x80 0x99,十进制为 226 128 153

该页面使用UTF-8而不是ASCII的原因是什么?简单。首先,ASCII是UTF-8的子集。其次,UTF-8支持整个Unicode。因此,如果可以使用UTF-8,则很少有理由使用ASCII。

答案 1 :(得分:1)

第一个字符是ASCII,代码39.第二个是UNICODE字符,代码8217。

请参阅UNICODE character table,特别是this character

有关详情,请参阅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>

答案 2 :(得分:1)

我有同样的问题(尝试将字符串实际转换为大写字符,遇到这个字符并且'破坏'一堆将特殊字符转换为大写字符串的方法。

我使用了这个解决方案:

    $text = preg_replace("/[`‛′’‘]/u", "'", $text);

(不是地雷 - 取自这里:https://stackoverflow.com/a/24925209/6136613

然后将其转换为常规逗号,您可以在其上执行普通的php函数。

答案 3 :(得分:0)

似乎这是UTF16表示。可能该网站正在使用Javascript中的"’".charCodeAt(0);将字符转换为其代码表示