【发布时间】:2011-05-21 21:32:03
【问题描述】:
我正在使用 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。只做后者是行不通的。您需要在 php 脚本的顶部添加 mb_internal_encoding("UTF-8");。
如何正确编码数据以便插入?
谢谢大家的帮助,这是有效的方法!
- 打开 MySql 工作台。设置 字符编码和整理 用户表。字符集:utf-8 排序规则:utf8_unicode_ci
- 设置name列的排序规则 utf8_unicode_ci。完毕。这 插入应该可以工作。
感谢您的所有帮助。
【问题讨论】:
-
确保您的插入查询的文件编码也是 UTF-8
-
@Anatoly 我添加了 mb_internal_encoding("UTF-8");在页面顶部,但它不起作用。
-
我已将您的自我回答添加到您的问题中。以后,请通过编辑您的问题(查找“编辑”链接)添加任何相关信息,而不是将其作为答案或评论发布。祝你好运!
-
以 UTF-8 编码保存您的 php 文件。您必须在编辑器中设置 php 文件的编码。例如:然后你在记事本中保存 php 文件,你必须在选项中选择 UTF-8 编码。
-
@Anatoly 我使用 Notepad++ 来编辑我的代码。你是说我应该在那里将我的php文件的编码设置为UTF-8。对不起,我可能误解了,为什么代码是依赖于编辑器的。
标签: php mysql codeigniter encoding turkish