Php fgetcsv()不读取阿拉伯字符

Php fgetcsv()不读取阿拉伯字符,php,fgetcsv,Php,Fgetcsv,当尝试导入CSV文件时,运行fgetcsv时,阿拉伯语字符消失,但当我从fopen打印输出时,阿拉伯语字符显示良好。奇怪的是,这只发生在我们的生产环境中,而不是在我的开发环境中,fgetcsv可以很好地读取阿拉伯语字符。是否有一些服务器设置在生产环境中设置不正确?fgetcsv()根据系统区域设置对文件的编码进行假设。正如PHP手册所述: 此函数将考虑区域设置。如果LANG是,例如。 en_US.UTF-8,采用单字节编码的文件由此读取错误 功能 您可能希望比较两台机器上的区域设置,并在其中一台

当尝试导入CSV文件时,运行
fgetcsv
时,阿拉伯语字符消失,但当我从
fopen
打印输出时,阿拉伯语字符显示良好。奇怪的是,这只发生在我们的生产环境中,而不是在我的开发环境中,
fgetcsv
可以很好地读取阿拉伯语字符。是否有一些服务器设置在生产环境中设置不正确?

fgetcsv()
根据系统区域设置对文件的编码进行假设。正如PHP手册所述:

此函数将考虑区域设置。如果
LANG
是,例如。
en_US.UTF-8
,采用单字节编码的文件由此读取错误 功能


您可能希望比较两台机器上的区域设置,并在其中一台机器上永久更改它,或者在
fgetcsv()之前使用类似于
setlocale(LC_ALL,'ar_AE.utf8')
(第二个参数显然取决于文件的编码)

csv文件的编码是什么?无法复制:我用utf8用阿拉伯语创建了一个测试文件。fgetcsv工作正常。您能发布该文件吗?CSV文件使用UTF-8编码,但正如lafor指出的,问题是在生产中没有正确设置区域设置。它不适用,因为阿拉伯语永远不会是单字节编码。@pguardiario我知道,但系统区域设置也可能是基于UTF-16的。谢谢!生产服务器上的区域设置显然没有正确设置。在
fgetcsv
之前,使用
setlocale(LC\u ALL,'en\u US.UTF-8')
完成了这项任务。