php 获取csv 文件编码,CSV编码php

以下是我需要将.csv文件从一台服务器发布到另一台服务器的问题。

我通过阅读.csv文件的内容并使用curl将其作为发布数据发送。

这工作没有问题。

但是当我尝试解析数据并将其存储在数据库的表中时,麻烦就开始了。

我有一个数组中的所有变量,如果我打印这个数组,它显示正确。

但是,如果我从该数组中回显一个值,我会得到各种奇怪的字符。

我最好的猜测是它与csv文件的编码有关,但我不知道如何解决这个问题。

这里是我用来解析csv数据的函数:

public function parseCsv($data)

{

$quote = '"';

$newline = "\n";

$seperator = ';';

$dbQuote = $quote . $quote;

// Clean up file

$data = trim($data);

$data = str_replace("\r\n", $newline, $data);

$data = str_replace($dbQuote,'"', $data);

$data = str_replace(',",', ',,', $data);

$data .= $seperator;

$inquotes = false;

$startPoint = $row = $cellNo = 0;

for($i=0; $i

$char = $data[$i];

if ($char == $quote) {

if ($inquotes) $inquotes = false;

else $inquotes = true;

}

if (($char == $seperator or $char == $newline) and !$inquotes) {

$cell = substr($data,$startPoint,$i-$startPoint);

$cell = str_replace($quote,'',$cell);

$cell = str_replace('"',$quote,$cell);

$result[$row][$this->csvMap[$cellNo]] = $this->_parseValue($cellNo, $cell);

++$cellNo;

$startPoint = $i + 1;

if ($char == $newline) {

$cellNo = 0;

++$row;

}

}

}

return $result;

}任何帮助表示赞赏!

编辑:

好吧,经过一些更多的试验和错误,我发现它只是第一行有一些额外字符的第一个值。如果我回应这个值,那么在输出之后,所有输出都会搞砸。

所以我试图改变编码现在,如果我回声价值其一切良好,但我有一个新的问题,其字符串,但我需要一个int:

echo $val; //output: 7655 but messes up everything outputted after it

$val = mb_convert_encoding($val, "UTF-8");

echo $val // output: 7655

echo intval($val) //output: 0编辑:

预期产出:

7655Array ( [kenmerk] => ÿþ7655 [status] => 205 [status_date] => 1991-12-30 [dob] => 1936-09-04 ) succes搞砸了输出

7655牁慲੹ਨ††歛湥敭歲⁝㸽@㟾㘀㔀㔀਀††獛慴畴嵳㴠‾㈀㤀㔀਀††獛慴畴彳慤整⁝㸽 201ⴱ㄀㈀ⴀ30 †嬠潤嵢㴠‾㄀㤀㘀㘀-08〭㐀਀਩畳捣獥在我打印数组之后,我首先回应元素'kenmerk'

正如你在数组中看到的那样,元素'kenmerk'有一些额外的特性。

将数据转换为utf-8,如下所示:

$ data = mb_convert_encoding($ data,“UTF-8”);

消除了输出混乱的问题,并删除'ÿþ'(错误解释的BOM?),但我仍然不能将值转换为int

编辑:

好吧,我有点找到解决方案..

但因为我不知道为什么它的作品,我会很感激任何信息

var_dump((int) $val); // output: 0

var_dump((int) strip_tags($val); // output: 7655

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值