我們教學需要貼有【中文】是變數的網址,該變數提供PHP GET。
利如http://www.xn.com.tw/?t=中文
我有使用rawurlencode()轉碼,但是轉貼至Line後,從中文字開始,無法帶入連結中。
最新版本的Line無此問題,但是較舊,或是Line@都無法判斷中文字為連結的一部份。
試過下面幾點克服方案:(目前使用idn_to_ascii()解決。)
1.第三方短網址。
2.將中文存入資料庫中,使用數字變數對應資料庫取得中文。
3.使用explode("%",變數)將%號後面的數字取出,讀取時,每兩個字塞入%號還原。
4.使用idn_to_ascii()。
因為第4點IDN需要特別裝PHP擴展,想詢問各位是否有其他更好的方案?
----2019-01-14-update-----
淺水員您好~謝謝您指正跨網域問題,我今天有修改相對位置。
不過【利如】提供的網址,只是舉例,並不是要貼至Line的網址,我補充一下您回覆
【給我自己的機器人都能正常抓到並回傳連結】
我自己也是如此,但是收到留言的對方,有些版本在t=之後就不會成為連結的一部份,明天我去工程部借手機再截圖補上來,謝謝您。
----2019-01-15-update-----
下圖是我傳出去,中文字包含在連結中。
下圖是我使用Line@接收,在中文部份,變成不屬於連結的一部份。
因為沉下去了所以我沒注意到你有改。
我覺得這應該是LINE APP本身的問題,所以只能用非中文字的方法處理。
這邊提供另一個用英數字傳遞中文的方式:BASE64編碼
這並不需要用到資料庫、第三方短網址、或是安裝比較特別的 extension
其實 base64 跟「百分比編碼」意思差不多
但是看起來的網址會比較短
一般中文:http://www.xn.com.tw/?t=中文
百分比編碼:http://www.xn.com.tw/?t=%E4%B8%AD%E6%96%87
base64:http://www.xn.com.tw/?t=5Lit5paH
使用 base64 編碼有以下要注意:
+/=
這三個符號有特殊意義,所以要用base64的變體,參考:https://zh.wikipedia.org/wiki/Base64#在URL中的应用關於網址列中的 base64 的轉換可以參考:http://php.net/manual/en/function.base64-encode.php#103849