【发布时间】:2017-12-22 02:26:29
【问题描述】:
问题
我一直遇到一些我认为是 UTF-8 编码问题的问题,即帖子没有保存到我的数据库中。
当用户从 MS Word 复制和粘贴文本时会出现此问题。似乎有一个特定的字符组合导致了这个问题(我还没有发现任何其他导致相同问题的变体):
-
% b % B
这意味着,当我 var_dump() 我的输入时,我得到:
string(5) "70�ck"
代替:
string(5) "70% back"
编辑:我得到的数据库错误是:
不正确的字符串值:列 [...] 的“\xBAck an...”
我尝试过的
我正在使用 Summernote JS 插件。我尝试了一个不同的插件(WYSIHTML5),但我根本没有尝试过任何插件。我尝试将剪贴板文本粘贴为纯文本。我什至在summernote 上有一个onPaste 回调,它从MS Word 中剥离了所有愚蠢的编码/样式(我认为这是summernote 特定的问题)。
不幸的是,我无法通过搜索“编码问题“% 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"属性
更新:我也尝试了in this question建议的解决方案
我想我已经完成了所有常见的故障排除,但我有点卡住了。有谁知道为什么这种特定的字符组合会导致问题?也许我错了,这根本不是编码问题?有没有人有其他想法?
【问题讨论】:
-
检查这个答案。 . stackoverflow.com/questions/44732151/…
标签: php codeigniter utf-8