如何用php输入重音字母到mysql数据库?

时间:2014-01-28 02:56:26

标签: php mysql sql utf-8 decode

试着搜索这个问题,但我想我不知道这个行话。我使用php将我的网站内容输入到mysql数据库中,但是我的所有重音字母或撇号(西班牙语)都变成了一些疯狂的编码。例如:

' becomes â€

á becomes á

等等。首先我不知道这意味着什么,但是当我在我的网站上显示它们时,它们肯定不会恢复,我也不会期望它们,因为如果我手动输入UTF-8字母他们完全在我的网站上工作。

有没有办法解决这个问题,而无需重新输入我的所有文字?我有一种感觉,我可以使用PHP提取它们,解码它们,然后将它们重新插入但我不知道这样做的功能。最好的解决方案,如果有人知道这将是多么令人惊讶,那就是在sql中做到这一点。顺便说一下,列表示排序规则utf8_general_ci

对于一些进一步的信息,我没有对输入到数据库中的文本做任何事情(我知道这很糟糕,但我很糟糕!)此外,我在查询时没有做任何事情。我的函数插入纯文本并将纯文本提取到每个页面。通过这种方式,我可以将html写入我的表单,并在页面上显示为html,因此浏览器会正确解释它。我也有一种感觉,这真的很草率,但就像我说...感谢所有的帮助!

- 编辑 -

非常感谢那些向我提出其他问题的人。但是,我修复它的方式不在于那个答案,它只是给了我写入关键字来开始一个新的搜索。对于有此问题的任何人,我修复它的方法是使用函数utf8_decode()。我不确定这是一个很好的修复,但至少它现在正在工作,速度是我最大的优先事项。我确定核心问题在于如何将数据输入数据库。

1 个答案:

答案 0 :(得分:1)

您可以使用INSERT

确保$mysqli->set_charset("utf8")查询的字符编码在运行时正确无误

确保PHP发送正确的HTTP响应标头并且浏览器正在做正确的事情也是谨慎的:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

ini_set('default_charset', 'utf-8')

要更改表格,请执行ALTER TABLE myTable CHARACTER SET utf8 COLLATE utf8_general_ci;