肉眼看到的相同兩個字串的不一樣

祭出兩個相同(其實不一樣)的字符串

$strA = '8888‬';
$strB = '8888';

咱們肉眼看到的這兩個字符串是絕對相同的, 對的, 他是一個'8888', 讓咱們用 php (世界上最好的語言) 輸出下兩個字串的長度php

# code
var_dump($strA);
var_dump($strB);

# result
string(7) "8888‬"
string(4) "8888"

我滴媽呀, 怎麼會不一樣呢, 納悶..網站

讓咱們撕下她的假裝

for ($i = 0, $iMax = strlen($strA); $i < $iMax; $i++) {
    var_dump($strA[$i]);
}
string(1) "8"
string(1) "8"
string(1) "8"
string(1) "8"
string(1) "�"
string(1) "�"
string(1) "�"

咦, 這是個什麼鬼. 不像是正常字符啊. 哦, 對了, 咱們是用的Utf-8 字符集, 這三個應該是一個字符, 咱們把它組合起來編碼

獲取到 ASCII 碼值spa

for ($i = 0, $iMax = strlen($strA); $i < $iMax; $i++) {
    var_dump(ord($strA[$i]));
}
int(56)
int(56)
int(56)
int(56)
int(226)
int(128)
int(172)

這個編碼值是 [226 128 172], 讓咱們找到它. code

看, 在這裏
blog

來自於這個網站, 好像是輸出格式化標識符. 以上.unicode

相關文章
相關標籤/搜索