【发布时间】:2015-03-30 07:29:57
【问题描述】:
我知道,它被问了十几次,但我唯一想要的就是使用 php 脚本将一个像“Ä”这样的德语字母插入数据库中,这在现有解决方案中根本不起作用。
<?php
header('Content-type: text/html; charset=utf-8');
$con = mysqli_connect("localhost", "username", "password");
mysqli_set_charset($con, "utf8mb4");
mysqli_select_db($con, "database");
mysqli_query($con, "SET SESSION CHARACTER_SET_RESULTS =utf8mb4;");
mysqli_query($con, "SET SESSION CHARACTER_SET_CLIENT =utf8mb4;");
mysqli_query($con, "SET NAMES 'utf8mb4';");
mysqli_query($con,
"SET character_set_results = 'utf8',
character_set_client = 'utf8',
character_set_connection = 'utf8',
character_set_database = 'utf8',
character_set_server = 'utf8';");
$title = 'Ö';
$result = mysqli_query($con,
"INSERT INTO Test (Title)
VALUES ('" . utf8_encode($title) . "');");
#Doesn't work, this was inserted: Ã
?>
“标题”列的字符集设置为 utf8mb4_general_ci,表本身的字符集设置为 utf8_general_ci。 MySQL 服务器版本为 5.5.31 MySQL 字符集是 UTF-8 Unicode
有人知道我做错了什么还是我在这里遗漏了什么?
【问题讨论】:
-
mysqli_query($con, "SET SESSION CHARACTER_SET_RESULTS =latin1;"); mysqli_query($con, "SET SESSION CHARACTER_SET_CLIENT =latin1;");应该是 utf8mb4 而不是 latin1。 -
确保您的数据来源是提交 UTF8。如果您没有指定您的网页是 UTF8,它可能会以类似 Windows-1252 的形式提交
-
检查phpMyAdmin你的表格设置,可能你需要为表格切换字符集
-
感谢您的快速回答,我检查了表格字符集,它设置为 utf8_general_ci。我不知道如何确保我提交的数据的来源是 UTF8,但我添加了设置为 utf-8 的标头字符集。而且我还将 latin1 更改为 uft8mb4。但问题是它仍然不起作用。还有其他想法吗?
-
如果去掉 utf8_encode?span>
标签: php mysql sql database utf-8