Laravel Umlaute ORM - 保存问题

时间:2015-12-30 13:06:17

标签: php laravel sqlsrv

我从网络服务收到一些“Umlaute” - 比如“ä,ü,ö”,我在这里遇到utf-8的问题。当我把它们存入我的数据库时,它显示如下:

..rsität

好的,所以检查了utf-8编码,但是当生病时尝试在保存之前回显该值,它在utf-8中的所有Umlaute显示正确。

我的数据库也是utf-8(来自不同服务的另一个表存储utf-8没有任何问题)。这里唯一不同的是,我将它存储在交易中。

echo $laststop; // Fine with all the Umlaute

$Route = new BusRoute();
$Route->last_stop = $laststop; // if i set this to something like that: "Tüüt" as String, its correct in DB too
$Route->save();

//数据库错误

// database.php
'dev_db' => [
        'driver'   => 'sqlsrv',
        'charset'  => 'utf8',
        'prefix'   => '',
    ],

// model.php

class BusRoute extends Model
{
    protected $connection = 'db_dev';

    /**
     * The database table used by the model.
     *
     * @var string
     */
     protected $table = 'bus_routes';

 }

编辑:检查我的模型“BusRoute.php” - 使用UTF-8编码保存。

奇怪 - 因为我读了多个网络服务 - 而且只是遇到了这个问题。有任何想法吗?

1 个答案:

答案 0 :(得分:3)

网络服务为您提供数据,其中某些字符编码为相应的html entites。在将数据存储到数据库之前,使用html_entity_decode()将它们转换回单个字符。

$decoded_string = html_entity_decode('..rsität');

这会将ä转换回ä