Php 数据库保存奇怪的字符,无论我做什么

Php 数据库保存奇怪的字符,无论我做什么,php,mysql,database,encoding,Php,Mysql,Database,Encoding,我到处寻找,用尽了一切可能的解决办法,但都没能奏效。在管理表单中,文章名称和文本,如果是俄语,则会保存为一堆奇怪的字符 我使用mysqli\u set\u字符集('UTF8',$db)设置了html标记,PHP标题也设置为UTF8,在我的数据库中,文章标题和文章文本行设置为UTF8\u general\u ci 此外,我的表格排序规则设置为utf8\u general\u ci;我什么都做不了 if(isset($_POST['articleName'])){ mysqli_set_ch

我到处寻找,用尽了一切可能的解决办法,但都没能奏效。在管理表单中,文章名称和文本,如果是俄语,则会保存为一堆奇怪的字符

我使用
mysqli\u set\u字符集('UTF8',$db)
设置了html
标记,PHP标题也设置为UTF8,在我的数据库中,文章标题和文章文本行设置为UTF8\u general\u ci

此外,我的表格排序规则设置为utf8\u general\u ci;我什么都做不了

if(isset($_POST['articleName'])){
    mysqli_set_charset('utf8', $mysqli_connect);
    if (($_POST['articleName'] == null) || ($_POST['cat'] == null)) {
        $errorMsg = "Insert at least article name and choose category";
    }else{
        $articleName = preg_replace("/[\s_]/", "-", $_POST['articleName']);
        $articleText = nl2br(htmlentities($_POST['articleText'], ENT_QUOTES, 'UTF-8'));
        $catList = implode(',', $_POST['cat']);  //gets all checked boxes
        if ($_POST['videolink'] != ""){
            $videolink = str_replace("watch?v=", "embed/", $_POST['videolink']);
        }else{
            $videolink = "";
        }
        $sql = mysqli_query($mysqli_connect, "SELECT id FROM table WHERE title='$articleName'");
        $row_check = mysqli_num_rows($sql);
        if ($row_check > 0){
            $errorMsg = "This article name is already in the database!";
        }else{
            $ins = mysqli_query($mysqli_connect, "INSERT INTO table...");

我不知道我还能在这里做什么,请帮帮我

你能展示这些奇怪的字符是什么样子吗?你是否10000%确定HTML表单是UTF-8编码的?嗯,
mysqli\u set\u charset()
的参数应该是PHP应该对此表示不满,并抛出一个错误修复mysqli\u set\u charset(),如Pekka所说,执行“show VARIABLES like character\u set%”使用来自PHP的连接来确保连接正确。选中“SHOW CREATE TABLE”并确保字符集为UTF-8。如果DB正常,则必须是表单未作为UTF-8提交,或者输入的字符不是UTF-8。我猜是前者,但对于后者,你是输入俄语字符,还是从其他地方复制+粘贴?来自已知良好UTF-8站点而非其他源的C+P字符。检查内容类型标题是否为UTF-8。@Pekka웃 你是对的……php没有抱怨,但这就是问题所在。我看到许多其他论坛的查询都是这样写的……这就解决了问题。非常感谢!