当我添加文本时,我有输入文本的表单
Un sac à main de femme recèlerait une quantité importante de bactéries
它仅在数据库中添加Un sac
我已经尝试使用addlashes、mysql_real_escape_string、htmlspecialchars 等也使用UTF-8 编码,但它仍然无法插入整个字符串
为了在数据库中存储非美国字符串,您必须确保正确执行以下 3 个步骤中的每一个:
mysqli_set_charset()
(或您的 MySQL 连接器提供的任何东西)。header('Content-Type: text/html; charset=UTF-8');
如果您使用不同的字符集,请相应地更改它。)您当然可以使用不同的字符集进行存储和表示,但您为什么要这样做?
此外,在使用数据库和 HTML 时,您应该考虑:
mysqli_real_escape_string()
SET NAMES UTF8
htmlspecialchars()
您应该utf8_unicode_ci
在 orer 中用作列的排序规则,以便在其中添加法语字符串。
在连续两天打破我的头并阅读所有可能的答案之后,这就是解决问题的方法,并允许我插入额外的奇怪字符,如 em dash 等,并在没有看到奇怪字符的情况下检索数据。
这是完整的分步设置。
db列的排序规则需要是:utf8_general_ci
类型为:varchar(250)
在 PHP 标头中将默认客户端字符集设置为 UTF8
mysql_set_charset("UTF8", $link);
设置字符集结果,以便我们可以显示法语字符
$sql = "SET character_set_results=utf8";
$result = mysql_query($sql);
在 html 标头中指定,因此您可以查看法语字符:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
插入数据时不要使用utf8_decode,下面的就可以了
$query = 'insert into tbl (col) VALUES ("'.mysql_real_escape_string($variable).'");
使用普通查询来检索数据,示例查询:
$query = "select * from table;";
终于解决了这个问题,希望这对其他人有帮助。
为了跟进这一点,我正在使用 dbForge Studio 并只是粘贴法语文本,并且我正确设置了所有排序规则/编码。我没有设置的一件事是连接到数据库的实际编码。设置它UTF8
,一切都很好。@Janoszen 答案中的#2。
在php中:
header ('Content-type: text/html; charset=utf-8');
连接后:
mysql_set_charset("utf8");
有同样的问题。输入文本来自 ANSII 文件,因此它不是 UTF8,尽管我设置了所有 utf8。utf8_encode(input_text) 解决了它。
我努力了
htmlentities()
. .it 将字符串保存在数据库中
您应该尝试在 mysql 中插入特殊字符:
$con = mysql_connect($server,$uname,$pass);
$res = mysql_select_db($database,$con)
mysql_set_charset("letin1", $con);