PHP/MySQL特殊字符不能正确显示

31 浏览
0 Comments

PHP/MySQL特殊字符不能正确显示

我有一个问题。在执行MySQL查询并使用echo($...)显示时,我的数据库(MySQL 5.5.20)中有一段文本,其中包含'é'和" ' "这样的字符,它们显示不正确。对于我在数据库中输入的每个特殊字符,它显示为一个小问号在一个菱形内。如果我查看数据库中的文本本身,它是一个'é'和" ' ",所以我想问题不是MySQL。我可以做的一件事是在输入时使用str_replace替换所有像" ' " --> "'"这样的内容,但是这样我必须为每个字符都这样做。哦,我已经包含了,但这没有起作用。希望你们都有帮助我的信息,如果没有,请告诉我 🙂 提前致谢!Milaan

0
0 Comments

(PHP/MySQL特殊字符无法正确显示)

在连接到数据库成功后,我使用SQL查询SET NAMES utf8已经有一年时间了。

但是当你的所有内容都在相同的编码中时,这是不必要的。

  • 源文件编码
  • 表列排序
  • 网页编码(在PHP中:header('Content-Type:text / html; charset = utf-8');<header>中:<meta name =“Content-Type” value =“text / html; charset = utf-8”/>

出现这个问题的原因是:

在连接到数据库后,使用了SET NAMES utf8语句来设置字符集,但这是不必要的。因为当所有相关内容都使用相同的编码时,特殊字符应该能够正确显示。

解决方法是:

确保以下内容都使用相同的编码:

- 源文件编码

- 表列排序

- 网页编码(在PHP中使用header('Content-Type: text/html; charset=utf-8');和在<header>中使用<meta name="Content-Type" value="text/html; charset=utf-8" />

这样,当所有相关内容都使用相同的编码时,特殊字符就能够正确显示了。

0
0 Comments

问题:PHP/MySQL特殊字符无法正确显示的原因和解决方法

在PHP和MySQL中,有时会出现特殊字符无法正确显示的问题。这可能是因为在处理输入文本时没有正确处理特殊字符的转义。

通常,开发人员会使用str_replace函数,将所有不常见的符号替换为它们的&#xxx;等效字符,这样做可以防止注入和糟糕的HTML渲染。例如,如果某人输入HTML标签,它们将在您的页面中生效。

下面是一个示例代码,展示了如何使用str_replace函数来处理输入文本中的特殊字符:

$input = "This is a bold statement.";
$output = str_replace("<", "&lt;", $input);
$output = str_replace(">", "&gt;", $output);
echo $output;

上述代码将替换输入文本中的"<"和">"符号,使其正确显示在页面上。

然而,上述方法可能会非常繁琐和冗长。开发人员可能需要编写很多行代码来逐个替换每个字符。为了简化这个过程,可以使用正则表达式来替换特殊字符。

下面是一个示例代码,展示了如何使用正则表达式来替换输入文本中的特殊字符:

$input = "This is a bold statement.";
$pattern = "/<|>/";
$output = preg_replace($pattern, "&$0;", $input);
echo $output;

上述代码使用正则表达式"/<|>/"来匹配"<"和">"符号,并在替换时添加"&"前缀,从而正确显示在页面上。

使用正则表达式替换特殊字符的方法更简洁和高效,而且不需要编写很多代码。因此,建议开发人员在处理特殊字符时使用这种方法。

希望以上内容对解决PHP/MySQL特殊字符无法正确显示的问题有所帮助。

0
0 Comments

问题的原因是因为PHP和MySQL在处理特殊字符时的字符编码不一致,导致特殊字符无法正确显示。解决方法是将所有相关的部分都设置为utf-8编码,包括数据库字段、数据库连接和内容类型。可以使用mysql_set_charset函数(对于经典的mysql)或$db->exec('SET CHARACTER SET utf8')(对于PDO)来设置数据库连接的字符编码。同时,需要确保PHP文件本身也是utf-8编码的。如果在HTML/PHP代码中直接打印特殊字符,那么PHP文件的编码也会影响到特殊字符的显示。可以通过将特殊字符编码为实体来解决这个问题。通过mysql_set_charset('utf8')函数可以正确解决该问题。

0