错误的排序规则会创建无效的标记 laravel

所以我在我的 localhost 中开发了一个 laravel 应用程序,它是一台 Windows 笔记本电脑,但我的应用程序服务器位于 linux 服务器中。当我在 textarea 中开发和保存一些带有特殊字符的随机文本时,例如“Ç ~ º”,所有内容都很好地保存在 db 中并显示在浏览器中。问题出在服务器(linux)中,它会创建特殊字符,例如“pátio nº 64/2”,并在浏览器中显示错误。


我试图将 config/database.php 文件中的排序规则更改为与 db 相同(我们使用葡萄牙语排序规则)'collation' => 'Latin1_General_CI_AS' 和 charset =>'utf8' 但没有任何改变。


有任何想法吗?我正在使用 sql server 数据库如果我将字符集更改为 latin1 而不是 utf8,则服务器显示错误


PDOException in Connector.php line 55

SQLSTATE [] (null) (severity o)

在保存在数据库中之前,我也尝试过使用 html 解码实体,但没有奏效。在这个问题上我真的需要一些帮助......


德玛西亚99
浏览 109回答 2
2回答

海绵宝宝撒

你必须改变collate和charset。如果您能够设置collate并charset通过,config/database.php那么您可以这样做(对于 mysql):'charset' => 'utf8mb4','collation' => 'utf8mb4_unicode_ci',但是,如果您不想更改数据库排序规则,那么您可以选择仅更改特定表的排序规则和字符集。为此,请使用以下查询:ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

叮当猫咪

在我的控制器中,我在保存之前使用过它,$var = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $request->input ('input1' ));
打开App,查看更多内容
随时随地看视频慕课网APP