将挪威字母(æøå)插入数据库时遇到问题。我的文档的charset编码(使用Notepad ++)设置为UTF-8。正在插入的变量具有正确的字符,但是当插入一个应该显示为“spørsmål”的单词时,会插入到数据库中,显示为“spørsmÔ ¥升”。
我正在使用以下代码插入:
$newContent = htmlspecialchars($_POST['newContent']);
$stmt = $mysqli->prepare("UPDATE info SET frontpageText=?");
$stmt->bind_param('s', $newContent);
$stmt->execute();
$stmt->close();
当连接到数据库时,我尝试使用
$mysqli->set_charset("utf8");
$mysqli->query("SET NAMES 'utf8'");
我也做了以下事情:
utf8_danish_ci
header('Content-type: text/html; charset=utf-8');
(PHP标题)charset="utf-8"
(在HTML头中)SET NAMES utf8;
关于这一点最糟糕的部分是,我实际上已经让它早一点工作了,但我已经破坏了某些东西(我不知道是什么)。
任何人都知道如何解决这个问题?
编辑:问题已解决。显然,该表未正确设置为UTF-8。在phpMyAdmin中删除此代码
ALTER TABLE table_name CHARSET = 'utf8';
答案 0 :(得分:3)
字符集和排序规则有单独的编码(一个可以是latin1,另一个可以是utf8)。
字符集是一组符号和编码。排序规则是一组用于比较字符集中字符的规则。让我们用虚构字符集的例子来区分。
要诊断表的编码,可以运行此查询,其中##TABLENAME##
应该是实际的表名。
SHOW CREATE TABLE ##TABLENAME##
如果编码不是utf8,可以用
更改alter table table_name charset = 'utf8';
这是关于整理与字符集What does character set and collation mean exactly?的一个主题。
答案 1 :(得分:0)
您可以将所有字符转换为html字符并以这种方式保存到数据库中。
mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8');
所有浏览器都会以正确的方式显示它。
答案 2 :(得分:0)
确保默认表charset或字段charset设置为utf-8。 我知道您已经说过数据库字符集设置正确,但是如果表格指定了不同的字符集,表格可能会干扰它。