当前位置: 首页 > 知识库问答 >
问题:

从Excel导入CSV时字符编码问题?

施景同
2023-03-14

我有一个导出CSV文件的PHP脚本。我的用户然后在Excel中编辑文件,保存它,并重新上传它。

如果他们在字段中键入欧元符号,则在上载文件时,欧元符号以及之后的所有内容都将丢失。我正在使用str_getcsv函数。

如果我尝试转换编码(比如UTF-8),欧元符号就会消失,我会得到一个缺少的字符标记(通常由一个空白的正方形或菱形中的问号表示)。

如何将编码转换为UTF-8,同时保留欧元符号(和其他非标准字符)?

编辑:

这是我的密码:

/**
 * Decodes html entity encoded characters back to their original
 * 
 * @access public
 * @param String The element of the array to process
 * @param Mixed The key of the current element of the array
 * @return void
 */
public function decodeArray(&$indexValue, $key)
{
    $indexValue = html_entity_decode($indexValue, ENT_NOQUOTES, 'Windows-1252');
}

/**
 * Parses the contents of a CSV file into a two dimensional array
 * 
 * @access public
 * @param String The contents of the uploaded CSV file
 * @return Array Two dimensional-array.
 */
public function parseCsv($contents)
{
    $changes = array();
    $lines = split("[\n|\r]", $contents);

    foreach ($lines as $line) {
        $line = utf8_encode($line);
        $line = htmlentities($line, ENT_NOQUOTES);
        $lineValues = str_getcsv($line);
        array_walk($lineValues, 'decodeArray');
        $changes[] = $lineValues;
    }

    return $changes;

我还尝试了以下替代utf8_编码功能:

    iconv("Windows-1252", "UTF-8//TRANSLIT", $line);

而且还只是:

    $line = htmlentities($line, ENT_NOQUOTES, 'Windows-1252');

使用utf8_encode函数,将从字符串中删除违规字符。与任何其他方法,字符和字符后的一切都丢失了。

例子:

字段值:"促销€Mobile"

解释为:“Promo Mobile”

共有1个答案

华宪
2023-03-14

将这些添加到CSV文件的开头

chr(239) . chr(187) . chr(191)
 类似资料:
  • 当我导入包含一些国家/地区的CSV文件时,我遇到了一些字符的问题。它没有很好的编码然后我得到了?标记,而不是CSV文件中写入的字符。这里有一些国家让我面临这个问题:奥兰群岛、圣巴特勒米、科特迪瓦、库拉索岛。 下面是导入csv文件的代码: 首先我使用了FileReader,所有这些国家都出现了问题,然后我改为InputStreamReader并添加了这个UTF-8字符集,问题几乎解决了。当我使用字符

  • 所以我有这个文件(http://mountainmarathon.ch/components/com_chronoconnectivity6/chronoconnectivity/uploads/20190814194827_classifica-cat-standard-3.csv)哪个“应该”用utf-8编码。当我试图通过fgetcsv或file_get_内容读取内容时,我得到了那些黑色钻石,

  • 我需要将javascript数组导出到excel文件并下载它,我正在此代码中执行此操作。数据是一个脚本对象数组。 所有这些都很好,直到我有了非英语字符的字符串属性,比如西班牙语、阿拉伯语或希伯来语。如何使用所有这些非ASCII值进行导出?

  • 我一直在读很多帖子,包括这篇 Javascript导出CSV编码utf-8问题 我知道很多人提到这是因为microsoft excel,使用这样的东西应该是可行的 https://superuser.com/questions/280603/how-to-set-character-encoding-when-opening-excel 我在ubuntu(它甚至没有任何问题)上试过,在window

  • 我需要导出javascript数组到CSV文件和下载。我这么做了,但是'ó,ü,ö,ó,ş'这些字符在CSV文件中看起来像'\\\\\\\\\\\'。我已经尝试了这个网站上推荐的许多解决方案,但对我不起作用。 我添加了我的代码片段,有人能解决这个问题吗?

  • 问题内容: 我正在为我的一个项目使用Elasticsearch Logstash和Kibana构建概念证明。我的仪表板的图形工作正常。我的项目的要求之一是能够下载文件(csv / excel)。在kibana中,我看到的唯一下载文件的选项是单击创建的可视化文件上的“编辑”按钮。是否可以在仪表板上添加链接,使用户无需进入编辑模式即可下载文件。其次,我想禁用/隐藏除查看仪表板之外的任何人的编辑模式。谢