PHP:使用utf8\U编码时csv中错误编码的字符

PHP:使用utf8\U编码时csv中错误编码的字符,php,mysql,csv,Php,Mysql,Csv,当从MySql数据库提取数据并将其插入CSV文件时,我面临一个奇怪的问题。在数据库中,字段值如下所示: K Secure Connection 1 año 1 PC 在将其写入CSV文件之前,当我echo它时,我在终端中得到与上面相同的结果 我使用以下代码将内容写入CSV文件: fwrite($this->fileHandle, utf8_encode($lineContent . PHP_EOL)); 但是,当我使用LibreOffice Calc打开CSV(并指定UTF-8作为编码

当从MySql数据库提取数据并将其插入CSV文件时,我面临一个奇怪的问题。在数据库中,字段值如下所示:

K Secure Connection 1 año 1 PC
在将其写入CSV文件之前,当我
echo
它时,我在终端中得到与上面相同的结果

我使用以下代码将内容写入CSV文件:

fwrite($this->fileHandle, utf8_encode($lineContent . PHP_EOL));
但是,当我使用LibreOffice Calc打开CSV(并指定UTF-8作为编码格式)时,会显示以下内容:

K Secure Connection 1 año 1 PC
我不知道为什么会这样。有人能解释一下如何解决这个问题吗

REM:

SELECT @@character_set_database;
`var_dump($lineContent, bin2hex($lineContent))`
返回

latin1 
REM 2:

SELECT @@character_set_database;
`var_dump($lineContent, bin2hex($lineContent))`
给予


我会尝试用其他编辑器打开csv文件,以确保问题不在办公室

如果内容已经是UTF-8格式,则可能会对其进行双重编码

我也更喜欢使用UTF-8,所以我从已经在UTF-8中的数据库中获取数据,不需要更多的转换。为此,我在打开SQL连接后立即运行此查询:

"set names 'utf8'"

我会尝试用其他编辑器打开csv文件,以确保问题不在办公室

如果内容已经是UTF-8格式,则可能会对其进行双重编码

我也更喜欢使用UTF-8,所以我从已经在UTF-8中的数据库中获取数据,不需要更多的转换。为此,我在打开SQL连接后立即运行此查询:

"set names 'utf8'"

var\u dump
显示该字符串已经用UTF-8编码。在其上使用
utf8\u encode
将对其进行篡改(该函数尝试从拉丁语-1转换为UTF-8)。因此,您实际上是在将UTF-8编码的“año”写入您的文件中,然后由LibreOffice“正确”提取


只需不
utf8\u编码

var\u转储
显示该字符串已经用UTF-8编码。在其上使用
utf8\u encode
将对其进行篡改(该函数尝试从拉丁语-1转换为UTF-8)。因此,您实际上是在将UTF-8编码的“año”写入您的文件中,然后由LibreOffice“正确”提取


只需不
utf8\u编码

在将CSV行写入文件后,是否可以包含该行的转储?这将有助于确定是LibreOffice误解了它,还是PHP错误地编写了它。我用gedit(一个文本编辑器)打开了CSV,坏字符就在那里(即,在打开LibreOffice之前)是你的数据库utf-8,用utf8连接到它吗?字符集似乎是拉丁语
var_dump($lineContent,bin2hex($lineContent))
–这给了你什么?现在还不清楚字符串的实际编码是什么;最简单的方法是查看实际字节其次,为什么要
utf8\u编码
ing?您是否明确希望从Latin1转换为UTF-8?在该CSV行写入文件后,是否可以包含该行的转储?这将有助于确定是LibreOffice误解了它,还是PHP错误地编写了它。我用gedit(一个文本编辑器)打开了CSV,坏字符就在那里(即,在打开LibreOffice之前)是你的数据库utf-8,用utf8连接到它吗?字符集似乎是拉丁语
var_dump($lineContent,bin2hex($lineContent))
–这给了你什么?现在还不清楚字符串的实际编码是什么;最简单的方法是查看实际字节其次,为什么要
utf8\u编码
ing?您是否明确希望从拉丁文1转换为UTF-8?顺便问一下。。。查看此相关帖子。。。这可能也是你的问题:顺便说一下。。。查看此相关帖子。。。这可能也是您的问题:第一条业务规则:知道字符串的编码方式。第一条业务规则:知道字符串的编码方式。