簡體   English   中英

CodeIgniter UTF-8編碼問題

[英]CodeIgniter UTF-8 encoding issue

問題

我一直在思考UTF-8編碼問題,即帖子未保存到我的數據庫中。

當用戶從MS Word復制並粘貼文本時,會發生此問題。 似乎是某些特殊的字符組合導致了此問題(我還沒有發現其他引起相同問題的變體):

  • % b
  • % B

這意味着,當我輸入var_dump()我得到:

string(5) "70 ck"

代替:

string(5) "70% back"

編輯:我得到的數據庫錯誤是:

[...]列的字符串值不正確:“ \\ xBAck an ...”


我嘗試過的

我正在使用Summernote JS插件。 我嘗試了不同的插件(WYSIHTML5),並且嘗試了完全沒有插件。 我嘗試將剪貼板文本粘貼為純文本。 我甚至在onPaste上都有一個onPaste回調,它從MS Word中剝離了所有愚蠢的編碼/樣式(我認為這是Summernote特有的問題)。

不幸的是,我無法搜索“ encoding issue“%b””及其變體……但我想上面的字符組合某種程度上已被翻譯成數據庫不支持的字符。 ..

  • 數據庫是MySQL 5.7.10 ,我在所有列上使用utf8_general_ci排序規則。
  • 我在CodeIgniter中將字符集設置為UTF-8: $config['charset'] = 'UTF-8';
  • 在CodeIgniter的數據庫配置中,我指定了'char_set' => 'uft8', 'dbcollat' => 'utf8_general_ci'
  • 該頁面的元標記設置為使用utf-8: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  • 該表單具有accept-charset="utf-8"屬性

更新:我也嘗試過此問題建議的解決方案


我想我已經完成了所有常規的故障排除,但我有點卡住了。 有誰知道為什么這種特殊的字符組合會導致問題? 也許我錯了,這根本不是編碼問題? 還有其他想法嗎?

您應該考慮在前端方面做更多的事情。 嘗試在表單上設置編碼,因為大多數瀏覽器應僅將UTF-8發送到您的服務器

<form ... accept-charset="UTF-8">
   ...
</form>

查看此答案以獲取更多詳細信息

另外,如果您使用的是編輯器,請簽出Quill ,它允許從單詞中粘貼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM