试着搜索这个问题,但我想我不知道这个行话。我使用php将我的网站内容输入到mysql数据库中,但是我的所有重音字母或撇号(西班牙语)都变成了一些疯狂的编码。例如:
' becomes â€
á becomes á
等等。首先我不知道这意味着什么,但是当我在我的网站上显示它们时,它们肯定不会恢复,我也不会期望它们,因为如果我手动输入UTF-8字母他们完全在我的网站上工作。
有没有办法解决这个问题,而无需重新输入我的所有文字?我有一种感觉,我可以使用PHP提取它们,解码它们,然后将它们重新插入但我不知道这样做的功能。最好的解决方案,如果有人知道这将是多么令人惊讶,那就是在sql中做到这一点。顺便说一下,列表示排序规则utf8_general_ci
。
对于一些进一步的信息,我没有对输入到数据库中的文本做任何事情(我知道这很糟糕,但我很糟糕!)此外,我在查询时没有做任何事情。我的函数插入纯文本并将纯文本提取到每个页面。通过这种方式,我可以将html写入我的表单,并在页面上显示为html,因此浏览器会正确解释它。我也有一种感觉,这真的很草率,但就像我说...感谢所有的帮助!
- 编辑 -
非常感谢那些向我提出其他问题的人。但是,我修复它的方式不在于那个答案,它只是给了我写入关键字来开始一个新的搜索。对于有此问题的任何人,我修复它的方法是使用函数utf8_decode()
。我不确定这是一个很好的修复,但至少它现在正在工作,速度是我最大的优先事项。我确定核心问题在于如何将数据输入数据库。
答案 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;