如何将sql文本字段回显到段落中?
我的代码会将文字放入,但会将á
等重音更改为此 - > �
。
我尝试在标题中添加UTF-8并将其删除。
删除UTF-A会使sql内容正常,但段落外的所有内容都会混乱。
我检查过DB正在使用(UTF-8-unicode),文件是用UTF-8保存的
关于可能出错的任何想法?
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<textarea class="texto" name="textoarticulo" id="textoarticulo" form="formarticulo" placeholder="Texto del artículo...">
<?
echo $row['txt4'];
?>
</textarea>
答案 0 :(得分:4)
重要的是,整个代码具有相同的字符集,以避免字符显示错误的问题。
这里有一些必须设置为特定字符集的事项列表。
<强>接头强>
将HTML和PHP标头中的字符集设置为UTF-8
PHP( PHP标题必须放在任何输出之前:PHP echo,空格,HTML!):
header('Content-Type: text/html; charset=utf-8');
HTML (HTML标题放在<head>
/ </head>
标记内):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<强>连接强>
您还需要在连接本身中指定字符集。
PDO(在对象本身中指定):
$handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password');
MySQLi :(创建连接后直接放置,$mysqli
是连接对象)
$mysqli->set_charset("utf8"); // OOP style
mysqli_set_charset($mysqli, "utf8"); // procedural style
MySQL( depricated ):(创建连接后直接放置)
mysql_set_charset("utf8");
<强>数据库强>
您的数据库及其表格必须设置为UTF-8。请注意,charset 不与归类相同。
您可以通过为每个数据库和表运行一次以下查询(例如在phpMyAdmin中)
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
警告...... 有各种不同的情况需要不同的ALTERs
。 Details Here。做错ALTER
可能会让事情变得更糟。 - Rick James
php.ini规范
在php.ini
文件中,您应该为您的平台指定默认字符集,例如
default_charset = "utf-8";
(这与在所有网页上执行header('Content-Type: text/html; charset=utf-8');
基本相同)
文件编码的 强>
.php
文件本身是UTF-8编码也很重要。如果您使用Notepad ++编写代码,可以在任务栏的“格式”下拉列表中完成。您应该使用没有物料清单的UTF-8。如果你按照上面的所有指示,你的问题很可能会得到解决。如果没有,您可以查看此StackOverflow帖子:UTF-8 all the way through。