将mysql数据库更改为UTF-8后出错

时间:2016-05-06 20:02:29

标签: php utf-8 notepad++

我已经在我的数据库中插入了一些外国名称,我意识到我需要从标准的拉丁语/瑞典语改为UTF-8。我实际上把它改成了utf8mb4_general_ci。它现在正确地显示了角色,但我遇到了一个小问题。从文本文件(以utf-8编码)中检索代码时,它会正确地获取代码(例如FO),但在将其保存到数据库后,它现在显示为\ r \ nFO。我不确定这些额外字符的拾取位置,但不是我认为的文件。

在转换过程中我做错了什么,在保存之前是否需要对字符串执行某些操作,还是将其保存到数据库中?

我知道在这个问题上有很多主题,包括SO,但是有很多主题,而且我找不到这个问题。

一些编辑....我已经开启了“显示所有符号”#39;在Notepad ++中,CR LF在行尾正确显示。

插入数据库的代码是......

        $query = $db->prepare("INSERT INTO players 
        (Name, DetailsJSON)
        VALUES (:Name, :NewDetails)");

        $query->bindParam(':Name', $this->Name, PDO::PARAM_STR);
        $query->bindParam(':NewDetails', $this->DetailsJSON, PDO::PARAM_STR);

        $query->execute();
        $this->ID = $db->lastInsertID();

1 个答案:

答案 0 :(得分:0)

  

并且CR LF在行的末尾正确显示。

CR = \ r

LF = \ n

所以问题出在你的PHP代码中。您读取文件,修剪换行符。但是,如果不修剪代码的某些部分,则将所有CRLF转换为其文本表示形式。