Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改Laravel中导入的文件编码_Php_Laravel_Laravel 5_Encoding_Laravel 5.1 - Fatal编程技术网

Php 更改Laravel中导入的文件编码

Php 更改Laravel中导入的文件编码,php,laravel,laravel-5,encoding,laravel-5.1,Php,Laravel,Laravel 5,Encoding,Laravel 5.1,经过在论坛上的深入研究,我把我的问题贴在这里,因为没有一个主题与我的情况相匹配 我正在Laravel中导入一个文件(csv或Excel),在我的控制器中,我使用Input::file('file_name')获取该文件 用户必须能够从界面中的select中选择编码 所以我的问题是,我想将文件编码更改为用户设置的编码 我使用了mb\u detect\u encoding函数,但我总是在检查后使用ASCII编码 这是我的代码: $encoding = Input::get('encoding');

经过在论坛上的深入研究,我把我的问题贴在这里,因为没有一个主题与我的情况相匹配

我正在Laravel中导入一个文件(csv或Excel),在我的控制器中,我使用
Input::file('file_name')
获取该文件

用户必须能够从界面中的select中选择编码

所以我的问题是,我想将文件编码更改为用户设置的编码

我使用了
mb\u detect\u encoding
函数,但我总是在检查后使用ASCII编码

这是我的代码:

$encoding = Input::get('encoding');
$fileContent = \File::get($importFile);
$importFile = Input::file('import_file');
$enc = mb_detect_encoding($fileContent , mb_list_encodings(), true);
if ($enc !== $encoding){
    \File::put($importFile,mb_convert_encoding(\File::get($importFile), $encoding, $enc));
}
对于
mb\u检测\u编码($str)

检测字符串str中的字符编码

对于文件上载:

file方法返回的对象是Symfony\Component\HttpFoundation\file\UploadedFile类的实例

因此,在上面的代码中,
$importFile
是一个类的实例。将其传递到
mb\u detect\u encoding
不会给出实例所代表的文件的编码

要检查文件内容的编码,需要先加载该内容:

$importFile = Input::file('import_file');
$fileContent = file_get_contents($importFile->path());
然后您可以将内容传递到
mb\u detect\u encoding()
并检查编码:

$enc = mb_detect_encoding($importFile, mb_list_encodings(), true);

谢谢你的回答。但是没有什么改变,我总是有同样的问题。。检查更新后。您能确认
文件\u获取\u内容
是否正常工作吗?例如,尝试转储内容,如果它起作用,那应该是一大堆垃圾。我正在使用\File::get($importFile),如果我转储内容,我可以看到正确的内容。@Moslemcher如果我现在不明白你的意思。。。而经过编辑的问题也不再有意义。你在问一个新问题吗?我的回答解决了你的第一个问题吗?如果是,请将问题编辑回原来的状态,接受我的答案,并将新问题添加到问题的单独部分。问题未解决,您可以检查说明。请不要编辑问题,以免我的答案不再有意义。添加新代码或新更新作为新节。请记住,你的问题(和我的答案)可能会对未来的访问者有所帮助,如果它不再有意义,它将不会有任何帮助。我已经说过要检查更新。