【问题标题】:issue trying to save utf-8 in laravel尝试在 laravel 中保存 utf-8 的问题
【发布时间】:2015-02-18 21:17:39
【问题描述】:

在我的 laravel 应用程序中,我正在开发一个控制器,它具有两个用于将用户添加到数据库的功能(排除多余的代码)。

第一个函数从表单获取输入并创建一个用户:

public function addSingleUser() {
    $first_name = Input::get('firstName');
    $last_name  = Input::get('lastName');
    $email      = Input::get('email');
    $password   = str_random(6);

    $user = new User();
    $user->first_name = $first_name;
    $user->last_name  = $last_name;
    $user->email      = $email;
    $user->password   = Hash::make($password);
    $user->save();
}

第二个函数从 csv 读取数据并创建多个用户:

public function addManyUsers() {
    putenv("LANG=fr_FR.UTF-8");
    $users = Input::file('users');
    $file = fopen($users,"r");

    while($info = fgetcsv($file, 4096)) {
        $first_name = trim($info[0]);
        $last_name = trim($info[1]);
        $email = trim($info[2]);
        $password   = str_random(6);

        $user = new User();
        $user->first_name = $first_name;
        $user->last_name = $last_name;
        $user->email = $email;
        $user->password = Hash::make($password);
        $user->save();
    }

    fclose($file);
}

由于用户名可以有特殊字符,我需要能够在数据库中存储 utf-8 字符。如果我在第一个函数中使用 utf-8 字符(通过表单输入),所有内容都会正确存储在 users 表中。但是,如果我在第二个函数(通过 csv)中使用 utf-8 字符,则字段存储不正确并在第一个特殊字符处被截断(例如:“Michæl”存储为“Mich”)。

我认为这可能是 fgetscsv() 没有正确读取数据的问题,但是当我尝试对字段进行数据转储时(例如:dd($first_name);),输出的字符串是正确的,包含特殊字符。如果我尝试dd($user);,情况也是如此。所以如果第一个函数能够正确保存到数据库,我很困惑为什么第二个函数不能?

【问题讨论】:

  • 您是否尝试在编辑器中打开您的 csv 文件并使用 UTF-8 编码保存它?简而言之,您是否尝试过对 csv 本身进行编码?
  • @SühaBoncukçu 使用 UTF-8 编码保存有效。对不起,如果这是一个愚蠢的问题,但为什么要解决它?非常感谢您的帮助。
  • 我不认为这是一个愚蠢的问题,因为每个人都至少经历过一次。如果你在这里检查 UTF-8 部分,我想你会明白的:en.wikipedia.org/wiki/Byte_order_mark
  • 酷我去看看。如果您愿意,请发表您的评论作为答案,我会接受。再次感谢!
  • 为什么不呢?赞赏:)

标签: php csv laravel laravel-4 utf-8


【解决方案1】:

您是否尝试在编辑器中打开 csv 文件并使用 UTF-8 编码保存?简而言之,您是否尝试过对 csv 本身进行编码?

查看this link 的UTF-8 部分了解更多信息。

最好的,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多