我正在使用 PHP Codeigniter 编写一个 Web 应用程序。我收到可以是任何语言的输入,并将其保存在我的数据库中。
MYSQL DB 排序规则设置为 utf8_unicode_ci。对于 database.php 中的 codeigniter,我设置了这个:
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_unicode_ci';
当我在我的数据库上运行以下插入时:
insert into user (name,id) values ('John Temirtaş', 2)
我收到此错误:
不正确的字符串值:第 1 行的列 'name' 的 '\xC5\x9F'
s 有问题。它是一个土耳其字符。
到目前为止,我在调试时尝试过这个
print_r($name)
John Temirtaş
print_r("Encoded Name: ".utf8_encode($name))
Encoded Name: John TemirtaÅ
print_r("Decoded Name".utf8_decode($name)
Encoded Name: John Temirta?
print_r("Decoded-Encode Name: ".utf8_decode(utf8_encode($name)))
Decoded-Encode Name: John Temirtaş
我曾尝试将 John TemirtaÅ 保存在数据库中,并且效果很好。因此,我想我可能会utf8_encode($name)
在将其保存在数据库中之前将其保存在 utf8_decode 中,然后再显示它。只做后者是行不通的。您需要添加mb_internal_encoding("UTF-8");
到您的 php 脚本的顶部。
如何正确编码数据以便插入?
谢谢大家的帮助,这是有效的!
- 打开 MySql 工作台。设置用户表的字符编码和排序规则。字符集:utf-8 排序规则:utf8_unicode_ci
- 将name列的排序规则设置为utf8_unicode_ci。完毕。插入应该可以工作。
谢谢你的帮助。