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
    评论
导入shiftjis编码csv文件到MySQL数据库可以分为以下几个步骤: 1. 确定CSV文件编码格式为shiftjis,可以使用文本编辑器打开csv文件,查看文件编码格式。 2. 创建一个MySQL表格,用来存储CSV文件的数据,包括字段名称和数据类型等信息。 3. 编写PHP脚本,读取CSV文件的数据,将数据逐行插入到MySQL表格中。 下面是一个可能的PHP脚本示例: ```php <?php //连接到MySQL数据库 $link = mysqli_connect('localhost', 'username', 'password', 'database_name'); if (!$link) { die('连接数据库失败: ' . mysqli_error()); } //设置MySQL字符集 mysqli_set_charset($link, 'utf8'); //打开CSV文件 $file = fopen('data.csv', 'r'); //逐行读取CSV文件,插入到MySQL数据库中 while (($data = fgetcsv($file)) !== false) { //将每行数据插入到MySQL表格中 $sql = "INSERT INTO table_name (field1, field2, field3) VALUES ('$data[0]', '$data[1]', '$data[2]')"; if (!mysqli_query($link, $sql)) { echo '插入数据失败: ' . mysqli_error($link); } } //关闭CSV文件和MySQL连接 fclose($file); mysqli_close($link); ?> ``` 在导入CSV文件的过程中,可能会出现以下问题: 1. CSV文件编码格式不正确,导致数据乱码。 2. CSV文件中包含特殊字符,导致MySQL解析失败。 3. MySQL表格的字段类型与CSV文件中的数据类型不匹配。 4. CSV文件中的数据包含换行符,导致MySQL解析失败。 为了避免这些问题,可以在导入CSV文件之前,先进行数据清洗和格式转换等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值