我在我的网站中遇到了德语字符的问题,
在网站的 HTML/PHP 部分中,我有以下代码来设置 utf-8:
<meta charset="utf-8">
在MySQL中,我有这段代码来设置UTF-8编码。
SET CHARSET 'utf8';
以下是关于德语单词 "
Gemäß
" 的翻译:以下是该单词在 MySQL 表格中的展示:
Gemäß
以下是网站上该单词的展示方式:
Gemäß
有什么问题吗?谢谢。
我在我的网站中遇到了德语字符的问题,
在网站的 HTML/PHP 部分中,我有以下代码来设置 utf-8:
<meta charset="utf-8">
SET CHARSET 'utf8';
以下是关于德语单词 "Gemäß
" 的翻译:
以下是该单词在 MySQL 表格中的展示:
Gemäß
以下是网站上该单词的展示方式:Gemäß
有什么问题吗?谢谢。
我使用了这段代码来获取标题:
$title = mysql_real_escape_string(htmlentities($_POST['title']));
$title = $_POST['title'];
htmlspecialchars()
,要在SQL语句中插入字符串,请使用mysqli_real_escape_string()
或参数化查询。 - martinstoecklimysql_real_escape_string
在正确使用的情况下是完全足够防止SQL注入的。问题在于许多人没有正确使用它。 - deceze首先,请确保您的数据库中有UTF-8字符。
之后,在连接到MySQL后尝试使用SET NAMES 'UTF8'
:
$con=mysqli_connect("host", "user", "pw", "db");
if (!$con)
{
die('Failed to connect to mySQL: ' .mysqli_connect_errno());
}
mysqli_query($con, "SET NAMES 'UTF8'") or die("ERROR: ". mysqli_error($con));
正如手册所述:
SET NAMES指示客户端将使用哪个字符集向服务器发送SQL语句... 它还指定了服务器用于将结果发送回客户端的字符集。
您需要为php 5.x
执行此操作。
$yourNiceLookingString =
htmlspecialchars ($YourStringFromDB, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
并且适用于 php 4.x
$yourNiceLookingString = htmlspecialchars($YourStringFromDB);
我曾经遇到过同样的问题,解决方法是使用以下代码:
如果你已经创建了表格,你需要修改字符集如下:
alter table <table name> convert to character set utf8 collate utf8_general_ci.
MySQL默认将您的表字符集设置为latin_swedish
。
此外,当检索数据并将其显示到页面时,您可能会遇到一些问题。为此,请在连接数据库的行下方包含:mysql_set_charset('utf8')
。
例如:
mysql_connect('localhost','root','');
mysql_select_db('my db');
mysql_set_charset('utf8');
在HTML5中使用
<meta charset="utf-8">
在 HTML 4.0.1 中使用
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
SET NAMES 'utf8'
或 SET NAMES 'utf-8'
。其中一些适用于葡萄牙语,可能也适用于德语。我只是想不起来哪个是正确的,但如果不是正确的话,就会产生错误。你应该确保连接也是 utf-8 编码。
使用 mysqli 可以像这样完成:
$connection = mysqli_connect($host, $user, $pass, $db_name);
$connection->set_charset("utf8");
如果你的数据库中出现了错误字符,有一种方法可以纠正它:
在你的数据库中设置数据类型也使用UTF-8,这应该可以解决问题。
结果被 HTML 实体编码,就好像它们是通过 htmlentities() 处理的一样。我想知道你的变量是从表单中接收到的还是被某个所见即所得编辑器处理过了?
无论如何,在 HTML 模板上应该可以正常打印这些内容,但也可以使用 html_entity_decode() 函数进行解码。
希望这能帮到你。