PHP/MySQL编码问题. 而不是某些字符

Dyl*_*oss 2 php mysql collation utf-8 character-encoding

当使用php将某些字符输入我的mysql数据库时,我遇到了一些问题.我正在做的是将用户输入的文本提交到数据库.我无法弄清楚我需要改变什么以允许将任何类型的字符放入数据库并通过php打印出来,因为它是假设的.

我的MySQL排序规则是:latin1_swedish_ci

就在我从表单发送文本到数据库之前,我在数据上使用了mysql_real_escape_string().

以下示例

本文:

â??People are just as happy as they make up their minds to be.â??
â?? Abraham Lincoln 
Run Code Online (Sandbox Code Playgroud)

假设看起来像这样:

“People are just as happy as they make up their minds to be.”
? Abraham Lincoln
Run Code Online (Sandbox Code Playgroud)

Bre*_*ley 7

正如其他人所提到的,如果你想支持"特殊"字符,你需要从头到尾转换为UTF8.这意味着您的网页,PHP,mysql连接和mysql表.网页相当简单,只需使用UTF8的元标记即可.理想情况下,您的标题也会说UTF8.

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

将PHP设置为使用UTF8.无论如何,事情可能会奏效,但这是一个很好的措施:

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
Run Code Online (Sandbox Code Playgroud)

对于mysql,您希望将表转换为UTF8,无需导出/导入.

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8
Run Code Online (Sandbox Code Playgroud)

您可以而且应该将mysql配置为默认utf8.但您也可以运行查询:

 SET NAMES UTF8
Run Code Online (Sandbox Code Playgroud)

作为建立连接后的第一个查询,它将您的数据库连接"转换"为UTF8.

这应该可以解决所有角色显示问题.