相关代码:
$status = $db->run(
"INSERT INTO user_wall (accountID, fromID, text, datetime) VALUES (:toID, :fromID, :text, '" . time() . "')",
array(":toID" => $toID, ":fromID" => %accountID, ":text" => $text)
);
我正在从javascript中获取输入文本,然后将其扔到AJAX调用中进行处理,该调用将调用包含这些代码行的函数.
有问题的文本字符串是:“TürkçeTürkçeTürkçe!”
在调查数据库后,将以下值保存为“Tü¼rkçeTü¼rkçeTü¼rkçe!”,它是utf8_encoded的两倍.
通过从数据库中选择文本来查看文本时,我得到“TürkçeTürkçeTürkçe!”,这就是应该首先将它们保存在数据库中的方式.
据我所知,我没有对数据进行编码,因为PDO正在准备数据…
解决方法:
编码是一个b * tch.您需要确保它在几个地方都符合您的预期:
>带有Javascript的HTML页面.使用以下类似的元标记将其设置为utf-8:
< meta http-equiv =“ Content-Type” content =“ text / html; charset = UTF-8” />
>与数据库的连接.连接到数据库之后(在执行任何其他查询之前)执行查询集名称“ utf8”.
>您的数据库字段.在MySQL中,这称为排序规则,将其设置为utf8_general_ci(ci表示不区分大小写).
如果您拥有这3个,则您的数据应始终为utf-8(除非您自己进行编码).
为了确保一切正常,请确保您的源代码文件也为utf-8. Windows通常默认为iso.
标签:unicode,php,pdo 来源: https://codeday.me/bug/20191102/1991895.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。