我已经在我的数据库中插入了一些外国名称,我意识到我需要从标准的拉丁语/瑞典语改为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();
答案 0 :(得分:0)
并且CR LF在行的末尾正确显示。
CR = \ r
LF = \ n
所以问题出在你的PHP代码中。您读取文件,修剪换行符。但是,如果不修剪代码的某些部分,则将所有CRLF转换为其文本表示形式。