顯示結果從 1 到 7 共計 7 條

主題: Hide語法有bug(汗)

查看主題

  1. #3
    青年狼 卡庫爾 的頭像
    註冊日期
    Aug 2007
    住址
    加拿大 渥太華 一個時差泛濫的地方
    文章
    370
    樂園幣
    2,194.28
    0
    在 0 個帖子中被讚了 0 次
    應該是遇到“許蓋功”的樣子。

    許蓋功,即不是人,也不是獸,而是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=
    附件圖片 附件圖片


    けものをすきだ
    にんげんをすきだ

    Kir's Corner · deviantArt档案 · IRC 聊天统计
    卡庫拉迪·達格納爾

發文規則

  • 不可以發表新主題
  • 不可以發表回覆
  • 不可以上傳附件
  • 不可以編輯自己的文章
  •  

聯盟網站及推薦社區