應該是遇到“許蓋功”的樣子。
許蓋功,即不是人,也不是獸,而是Big5編碼的一個缺陷。
Big5編碼使用兩個位元來表示一個漢字。第一個位元一定是>127,這樣就可以分別英數字以及漢字。
不過,第二個位元有可能踩到<127的值。
使用低字元的問題就是會遇到特殊符號。例如“\”、“]”、“"”、“{”之類的符號在許多語言中都有特殊功用(例如Windows中,"\"是作爲數據夾分割符,而在Unix中則作爲轉義字元)。
許蓋功這三個字,在Big5編碼中,第二位元恰巧都是“\”。
所以許多軟体都會在處理這些字的時候出現問題。
PHP的字串與C的字串一樣只是位元陣列而已,所以很容易出現“許蓋功問題”。
(EUC編碼的)GB2312和UTF-8的第二(和UTF-8的第三)個位元都在160以上,所以不會和Big5一樣容易受影響。
那麽,看看茶大遇到的問題。
財 的編碼是 0xb0, 0x5d,
5d 對應字符 “]”,所以 “[hide=財]”就會被解釋成“[hide=°]]”
(當然°是該位元在Unicode中的字元,在Big5中這個地方是沒有字元的,因此轉換時會發生錯誤。)
閱 的編碼是 0xbe, 0x5c,
5c 對應字符 “\”,所以“[hide=閱]”就會被解釋成“[hide=
於是戰的更加hide=奇怪]@ 咚一聲
停戰最好的方式便是
黑暗。關掉一切光明
最後卻染的一片紅
++---++
以上是呆鯨發文的時候遇到的bug(汗)
如果把HIDE的"=奇怪"拿掉
文章就會正常顯示
以上@@
看著陽光閃亮亮,頭圖感謝耐特ˇˇ
那麼,接下來會轉移到這邊活動:獸魂、獸繪
這個Bug很奇怪(咦)作者: 呆虎鯨
因爲“奇怪”兩個字都沒特殊的代碼……拿掉與不拿掉“奇怪”,顯示也都一樣。
加的第二個位元倒是“[”(所以可能會令phpBB判讀錯誤)……
所以究竟哪裏奇怪?卡庫爾不清楚。
題外話……卡庫拉迪今天也被許蓋功抓住了嗚……
[hide]值得一提的功能更新
這個Hide語法的裡面...
有些文字最好不要放在點擊文字中
只能說
問題是出在字的編碼吧?
不過說真的
卡庫爾好強啊!!
居然能查出這兩個中文字的編碼...囧
看來一山還有一山高啊...
關於這麼詳細的東西,小洛從來沒有碰過
今天看到這篇,也好好學起來
(但最下面的那串代碼就免啦!...因為半個字都看不懂)
最下面的那串代碼是給人看不是給獸看的(笑)
是的,問題出在Big5的編碼有問題。