在 PHP 中读取 CSV 文件返回黑色菱形问号

Posted

技术标签:

【中文标题】在 PHP 中读取 CSV 文件返回黑色菱形问号【英文标题】:Reading CSV file in PHP is returning question marks in black diamonts 【发布时间】:2014-08-27 04:04:50 【问题描述】:

我正在尝试读取一个 .csv 文件并在之后使用它的数据,但是当我使用从该文件中获取的文本时,它带有一些“黑色钻石中的问号”,它应该有一些特殊字符,如“á”、“ú”。

我认为 .csv 文件中的文本可能采用了不同的编码,但我做了一个 mb_detect_encoding 并显示它是 UTF-8

这是我现在使用的代码:

<html>
<head>
    <meta charset="utf-8">
</head>
<body>

<?php

$row = 1;
$handle = fopen ("Exportar.csv","r");

$url = array();
$text1 = array();
$text2 = array();
$title = array();
$subtitle = array();
$description = array();
$image = array();

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
    $num = count ($data);
    if ($row > 1) 
        $url[$row -2 ] = $data[2];
        echo $text1[$row -2] = $data[6];
        //echo $encode = mb_detect_encoding($text1[$row -2]);
        $text2[$row -2] = $data[7];
        $title[$row -2] = $data[8];
        $subtitle[$row -2] = $data[9];
        $description[$row -2] = $data[10];
        $image[$row -2] = $data[11];
    
    $row++;

fclose ($handle);


// Rest of the code....

?>

这是输出:

Vimos que voc�n�o realizou nenhum pedido em nosso site nos �ltimos 90 dias。 Para o seu pr�ximo pedido, ganhe 15% de desconto em todo o site!

【问题讨论】:

对此有大量重复问题,投票结束check this question 【参考方案1】:

HTML 自身无法读取特殊字符。您需要将它们转换为 HTML 实体,例如 &amp;aacute;。查看htmlentities 函数。

类似这样的:

<?php
   $str = 'é, í, ó, ú, ü, ñ';
   echo htmlentities($str, ENT_IGNORE , "ISO-8859-1");
?>

【讨论】:

我试图这样做,但是当我在我的应用程序上使用文本时,是这样的:Vimos que você não realizou nenhum pedido em nosso site nos últimos 90 dias。 Para o seu próximo pedido, ganhe 15% de desconto em todo o site!

以上是关于在 PHP 中读取 CSV 文件返回黑色菱形问号的主要内容,如果未能解决你的问题,请参考以下文章

UTF-8 中的特殊字符在 MYSQL 中使用 magento 存储为带问号的菱形

从 SQL Server 读取 nvarchar 时带菱形的问号

Android é 在电子邮件意图中显示为黑色菱形

单引号在浏览器中显示为菱形问号(无数据库或 PHP)

发送邮件后带有问号的php菱形

Magento删除菱形问号[重复]