我从网络服务收到一些“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编码保存。
奇怪 - 因为我读了多个网络服务 - 而且只是遇到了这个问题。有任何想法吗?
答案 0 :(得分:3)
网络服务为您提供数据,其中某些字符编码为相应的html entites。在将数据存储到数据库之前,使用html_entity_decode()将它们转换回单个字符。
$decoded_string = html_entity_decode('..rsität');
这会将ä
转换回ä
。