php - CSV 文件中值的奇怪二进制字符串(在 Laravel 中导入包含丹麦语 æ、ø 和 å 字母)

标签 php laravel encoding utf-8

我有一个 Mime 类型的文件:text/csv

我想遍历它并进行一堆字符串操作。

我有十亿列和行。但是一个简单的例子:

Foo    Bar    Grød
------------------
1      2      3
4      5      6

如果我只是直接打印出值,没有做任何事情,那么 Laravel 会打印这个(用于标题):

我的代码:

foreach( $headers as $entry ){
  dump( $entry );
}

输出

Foo
Bar
b"Grød"

现在第三行是问题所在。这是一个binary-string

但我想要'b"" 中的内容。所以我想要这样的输出:

Foo
Bar
Grød

如果我只是添加 utf8_decode,像这样:

foreach( $headers as $entry ){
  dump( utf8_decode( $entry ) );
}

Foo
Bar
Gr?d

?!

如何从包含丹麦语 æ、ø 和 å 字母的所有行中获取实际值?它是标准 UTF-8 编码的一部分,所以它应该是火箭科学。

加法1

如果我写:dd( $request['csv_file'] ),那么它会输出:

-test: false
-originalName: "FILENAME.csv"
-mimeType: "text/csv"
-error: 0
#hashName: null
path: "/private/var/folders/hl/r1syq9ys4z30lw08b6g8hhnh0000gn/T"
filename: "phpzYwY9I"
basename: "phpzYwY9I"
pathname: "/private/var/folders/hl/r1syq9ys4z30lw08b6g8hhnh0000gn/T/phpzYwY9I"
extension: ""
realPath: "/private/var/folders/hl/r1syq9ys4z30lw08b6g8hhnh0000gn/T/phpzYwY9I"
aTime: 2019-02-20 15:31:10
mTime: 2019-02-20 15:31:10
cTime: 2019-02-20 15:31:10
inode: 12891860254
size: 2282762
perms: 0100600
owner: 501
group: 20
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false

不知道对大家有没有帮助。

如果我(在终端中)写入 file -I FILENAME.csv 然后它输出: FILENAME.csv: application/octet-stream;字符集=二进制

最佳答案

尝试将文件的编码更改为UTF-8。对于转换,您可以使用 Notepad++Sublime Text 等文本编辑器。将文件转换为 UTF-8 或更好的格式为 UTF with BOM,保存并重试。

我想,由于文件中存在某些字符,php 认为文件是用其他字符集编码的(不是 UTF-8),或者文件是真的 由于您的数据库编码或您获取此 csv 文件的方式而在其他字符集中编码。

关于php - CSV 文件中值的奇怪二进制字符串(在 Laravel 中导入包含丹麦语 æ、ø 和 å 字母),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54787875/

相关文章:

python - 使用 BeautifulSoup 在 python 中进行编码

javascript - stackoverflow技术推送消息?

javascript - 如何使用ajax显示数据库中的图像

javascript - jquery post 调用路由 laravel 不工作

php - api的Laravel多路由文件

python - 字符串转unicode字符串

forms - 应用程序/x-www-form-urlencoded 和字符集 ="utf-8"?

php - Codeigniter-将 View 缓存成 View

php - 在之后打印 mysql 结果 10 x 10 php css 分页符

laravel - 输入字段上的 Vue JS 简单 v 模型功能在 Laravel 应用程序中不起作用