UTF-8 編碼的 equal 問題

Home Home
引用 | 編輯 z1022001
2016-11-13 16:12
樓主
推文 x0
請問一下有沒有人有給 UTF-8 編碼用的 equal 的 code
我記得之前在國外論壇有看到相關的源碼, 不過當時沒空所以沒仔細研究
現在找不到了想上來問問

(實際的 code 太複雜了, 以下拿類似的問題當例子)
複製程式
public plugin_init()
{
       register_clcmd("utf8", "cmdUtf8");
}

public cmdUtf8(id)
{
       if (read_argc() < 2)
              return PLUGIN_HANDLED;
       
       new szCmd[32];
       read_argv(0, szCmd, 31);
       new szArg[32];
       read_argv(1, szArg, 31);
       
       if (equal(szCmd, "utf8") && str_to_num(szArg) > 0)
       {
              new str1 = "中文";
       
              if (equal(szArg, str1)) {
                     client_print(id, print_chat, "%s is equal to %s", szArg, str1)
              } else {
                     client_print(id, print_chat, "%s is not equal to %s", szArg, str1)
              }
       }
       return PLUGIN_HANDLED;
}

印象中這樣的 code, 在命令列裡輸入:
utf8 中文
一定會顯示出
中文 is not equal to 中文
的結果, 換成英文就不會有這個問題
apple is equal to apple
apple is not equal to pen
, 請問有人有解決方法嗎

獻花 x0
引用 | 編輯 弒血
2016-12-12 13:59
1樓
  
下面是引用 z1022001 於 2016-11-13 16:12 發表的 UTF-8 編碼的 equal 問題: 到引言文
請問一下有沒有人有給 UTF-8 編碼用的 equal 的 code
我記得之前在國外論壇有看到相關的源碼, 不過當時沒空所以沒仔細研究
現在找不到了想上來問問
(實際的 code 太複雜了, 以下拿類似的問題當例子)
[code].......

這個只是單純地顯示訊息的clcmd呼叫


最後輸出 沒什麼問題啊... 

獻花 x0
引用 | 編輯 z1022001
2017-03-01 17:25
2樓
  
下面是引用 弒血 於 2016-12-12 13:59 發表的 : 到引言文


這個只是單純地顯示訊息的clcmd呼叫


最後輸出 沒什麼問題啊... 

有問題的,因為用原始的equal函數
會沒辦法作utf-8格式的字串比對
就會發生 "中文" 不等於 "中文" 的奇怪現象
以前是有找到過別人寫的函數才可以比對,不過現在弄丟了…

獻花 x0