8

我的网站上的德语字符有问题,

在网站的 html/php 部分,我有这段代码来设置 utf-8:

<meta charset="utf-8">

在 mysql 中,我有这段代码来设置 utf-8

SET CHARSET 'utf8';
  1. 这里有一些关于德语的词:Gemäß

  2. 这是这个词在 mysql 表中的样子:

    Gem&Atilde;&curren;&Atilde;Ÿ

  3. 以下是该词在网站上的显示方式:Gemäß

什么是问题?谢谢。

4

9 回答 9

2

我正在使用此代码来获取标题:

$title = mysql_real_escape_string(htmlentities($_POST['title']));

我只是覆盖它

$title = $_POST['title'];
于 2013-05-22T12:35:08.030 回答
1

首先,确保您的数据库中有 UTF-8 字符。

之后,SET NAMES 'UTF8'连接 MySQL 后尝试使用:

$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 语句发送到服务器...它还指定服务器应该使用的字符集将结果发送回客户端。

于 2013-05-22T12:10:06.820 回答
0

我有同样的问题。我通过使用解决了:

如果您已经创建了表,则需要将字符集修改为:

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');
于 2013-12-24T07:32:24.907 回答
0

结果是 html 实体编码的,就好像它们是由 htmlentities() 处理的一样,我想知道您的变量是从表单接收到的,还是正在由所见即所得的编辑器处理?

无论如何,这些应该在 html 模板上打印得很好,但是 html_entity_decode() 应该这样做。

希望这可以帮助

于 2013-12-26T21:24:38.847 回答
0

您需要这样做php 5.x

$yourNiceLookingString = 
htmlspecialchars ($YourStringFromDB, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');

并且对于php 4.x

  $yourNiceLookingString = htmlspecialchars($YourStringFromDB);
于 2014-11-21T08:07:48.097 回答
0

将数据库中的数据类型也设置为使用 UTF-8,这应该可以解决问题。

于 2015-02-04T16:53:41.720 回答
0

您应该确保 CONNECTION 也是 utf-8。

使用 mysqli 可以通过以下方式完成:

$connection = mysqli_connect($host, $user, $pass, $db_name);
$connection->set_charset("utf8");

现在,如果您以某种方式最终在数据库中输入了错误的字符,那么有一种方法可以使它正确:

  1. 在 PHP 脚本中,像现在一样检索信息,即不设置连接。这样,错误将被反转和纠正,并且在您的 php 文件中,您将拥有正确的 utf-8 格式的字符。
  2. 在 PHP 脚本中,通过将连接设置为 utf-8 来写回信息
  3. 此时,您应该在数据库中看到正确的字符
  4. 现在更改您网站的所有读/写功能以从现在开始使用 utf-8
于 2013-05-22T12:17:42.430 回答
0

尝试SET NAMES 'utf8'SET NAMES 'utf-8'。其中一些适用于葡萄牙语,可能也适用于德语。我只是不记得哪个是正确的,但如果不是,就会产生错误。

于 2013-05-22T12:08:26.157 回答
0

在 HTML5 中使用

<meta charset="utf-8">

在 HTML 4.0.1 中使用

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
于 2013-05-22T12:34:24.113 回答