看板 PHP 關於我們 聯絡資訊
公司是電商平台 商品描述的編輯器 是用 ckeditor編輯 會將編輯器組成的內容 存入資料庫的欄位 接著在前台的商品介紹呈現出來 目前遇到一個問題 如果我複製 由unicode組成的貼圖 再存入資料庫 會出問題 導致前台 無法將呈現資料出來 應該是貼圖的unicode 存到欄位時 無法轉換 導致db存入錯誤的內容 比如說 我複製 露天的某一段 http://goods.ruten.com.tw/item/show?21307059077449 文字 "新春活動 1" 前面 有三張貼圖 都是unicode組成的 想請問一下 是不是需要在config做設定? 或是需要在php加入某參數做轉換之類的? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 202.39.58.43 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1519991813.A.342.html
JustGame: 資料庫編碼?資料庫連線編碼? 03/02 20:53
liisi: 資料庫編碼是utf8_general_ci 03/02 22:30
liisi: 希望不要動到資料庫編碼 太危險了.. 03/02 22:32
hiigara: 大部分表情符號的utf8是4byte,mysql的utf8是3byte。存的 03/03 00:34
hiigara: 時候會拆成兩個3byte(依照rfc2279)。ut8mb4才能處理4byte 03/03 00:36
hiigara: 的utf8。 03/03 00:37
hiigara: 好像不是rfc2279,只是沒實作完全而已 03/03 00:51
wotupset: unicode有分版本號 太新的表情符號部分資料庫會無法對應 03/04 20:06
wotupset: 選有支援的資料庫來用就能解決了 03/04 20:06
LPH66: hiigara 提的那種應該是 UTF-16 變種的 UTF-8 03/05 21:50
LPH66: 那種實際上是 UTF-16 表示後再寫成 UTF-8, 所以 U+10000 03/05 21:51
LPH66: 以上的字就會變成兩個 3 byte 03/05 21:51
LPH66: 總之照 hiigara 建議的改用 utf8mb4 就行了 03/05 21:54
LPH66: 是說我剛剛翻了一下 mysql 的文件, 好像說 3 byte 的 03/05 21:56
LPH66: 是不支援 U+10000 以上的字的, 這應該是原 PO 失敗的原因 03/05 21:56
LPH66: 但如果程式本身的 UTF-8 支援就是這種半調子的方式的話 03/05 21:57
LPH66: 那才有可能像上述那樣用 UTF-16 變種硬塞進去 03/05 21:58