【问题标题】:Laravel Storage file encodingLaravel 存储文件编码
【发布时间】:2018-08-11 03:09:00
【问题描述】:

我正在尝试使用 Laravel 的存储外观将文本文件保存为 UTF-8。不幸的是找不到方法,它保存为us-ascii。如何保存为 UTF-8?

目前我正在使用以下代码来保存文件;

Storage::disk('public')->put('files/test.txt", $fileData);

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    我建议改用mb_convert_encoding

    $fileData = mb_convert_encoding($fileData, "UTF-8", "auto");
    Storage::disk('public')->put('files/test.txt", $fileData);
    

    【讨论】:

      【解决方案2】:

      ASCII 是 UTF-8 的一个子集,因此所有 ASCII 文件都已经 UTF-8 编码。 ASCII 文件中的字节和“将其编码为 UTF-8”产生的字节将是完全相同的字节。它们之间没有区别,因此无需做任何事情。

      看起来您的问题是文件实际上不是 ASCII。您需要确定他们使用的编码,并正确转码。

      【讨论】:

        【解决方案3】:

        您应该能够将“\xEF\xBB\xBF”(将其定义为 UTF-8 的 BOM)附加到您的 $fileData。所以:

        Storage::disk('public')->put('files/test.txt", "\xEF\xBB\xBF" . $fileData);
        

        还有其他方法可以在将文本写入文件之前对其进行转换,但这是最简单、最容易阅读和执行的方法。据我所知,Illuminate\Filesystem\Filesystem内部也没有字符编码方法。

        欲了解更多信息:https://stackoverflow.com/a/9047876/823549What's different between UTF-8 and UTF-8 without BOM?

        【讨论】:

          猜你喜欢
          • 2018-12-20
          • 2019-11-11
          • 2023-04-09
          • 2015-11-30
          • 2018-12-12
          • 2020-05-09
          • 2016-11-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多