gpt4 book ai didi

php - 在 Laravel 中读取 CSV 文件时出现 UTF-8、二进制数据和特殊字符问题

转载 作者:行者123 更新时间:2023-12-05 05:11:05 24 4
gpt4 key购买 nike

我正在使用 League/CSV Laravel 包来读取和操作 CSV 文件并将该 CSV 数据保存到数据库中,但是我在从 CSV 读取数据时仅遇到一些具有一些特殊字符(如“45.6 ºF”)的行的问题.

我搜索了很多有关此问题的信息,发现我们应该在数据库整理中使用“UTF-8”或“utf8mb4”,并将该 CSV 也保存在“utf8”中,但它仅适用于所有那些特殊字符在键盘上。

我想使用键盘上没有的所有类型的特殊字符,例如“45.6 ºF”。

目前,我的代码正在读取 CSV 列数据并将其转换为二进制数据 ' b"column value"' 它添加 "b" 字符串并将其转换仅将那些具有特殊字符的字符串转换为二进制值。

我花了很多时间但找不到更好的解决方案来解决这个问题。所以请帮助我,我将非常感谢你。

 $reader = Reader::createFromPath(public_path().'/question.csv', 'r');
$reader->setHeaderOffset(0);
$records = $reader->getRecords();
foreach ($records as $offset => $record) {
$qs = Question::first();
$qs->question = $record['Question'];
$qs->save();
}

在用“b”从 CSV 中读取后,它给了我这个结果。

array:2 [▼
"ID" => "1"
"Question" => b"Fahrenheit to Celsius (ºF to ºC) conversion calculator for temperature conversions with additional tables and formulas"
]

但它应该是没有“b”二进制的字符串格式。

如果我复制带有特殊字符的字符串并将其分配给静态变量,那么它可以正常工作并将数据保存到这样的数据库中

$a="Fahrenheit to Celsius (ºF to ºC) conversion calculator for temperature conversions with additional tables and formulas";

$qs = Question::first();
$qs->question = $a;
$qs->save();

经过一番努力,我找到了这个问题的解决方案。我只是将这一行添加到代码中,以便在保存到数据库之前将其转换为 utf8_encode

$r = array_map("utf8_encode", $record);

不要只是从 google 复制粘贴文本以保存在数据库中,因为复制粘贴文本和特殊字符在大多数情况下不起作用。

谢谢。

最佳答案

我已经找到了解决这个问题的方法。下面的代码行解决了我的问题 $r = array_map("utf8_encode", $record);我们只需要在保存到数据库之前转换为 utf8_encode

关于php - 在 Laravel 中读取 CSV 文件时出现 UTF-8、二进制数据和特殊字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com