所以我正在玩这个工具:
http://www.unit-conversion.info/texttools/ascii/
当我尝试这个角色时:
'
我看到值 039 ,可以通过以下方式验证:http://www.asciitable.com
但我很好奇:
’
同一工具中的此字符将返回: 226 128 153
但据我所知,ASCII是8位(甚至是7 ......)
226 128 153 在这里是什么?
答案 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);
将字符转换为其代码表示