【问题标题】:Laravel : How can I store Hindi Character in MySql DatabaseLaravel:如何在 MySql 数据库中存储印地语字符
【发布时间】:2019-08-05 18:35:07
【问题描述】:

我想使用 laravel 应用程序将印地语字符存储在 mysql 数据库中

我有以下数据库属性

 Database charset = utf8
 Database collation = utf8_general_ci

这些设置与 config/database.php

 'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'db'),
        'username' => env('DB_USERNAME', 'user'),
        'password' => env('DB_PASSWORD', 'password'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_general_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

但是当我尝试存储数据时,它给了我这个错误

"message": "SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '=' (SQL: select * from `col` where (`name` = \u091b\u0924\u094d\u0924\u094b\u0917) limit 1)",
"exception": "Illuminate\\Database\\QueryException",

请给我一些建议,我不明白我错过了什么

【问题讨论】:

  • 你真的有像\u091b\u0924\u094d\u0924\u094b\u0917这样的unicode字符串吗?你应该坚持使用 UTF-8 编码。

标签: mysql database laravel utf-8


【解决方案1】:

我正在为数据库和表设置字符集 utf8 和排序规则 utf8_general_ci 但我们需要检查表列是否具有相同的字符集和排序规则,我错过了相同的或者我不知道:)

【讨论】:

    【解决方案2】:

    正如错误消息中所暗示的,latin1 出现在某处。这可能是客户端的默认设置。

    您的 config/database.php 看起来不错。所以让我们换一种方式来解决它:

    连接后立即执行 SQL 命令SET NAMES utf8

    我不知道\u091b\u0924\u094d\u0924\u094b\u0917 来自哪里,但您确实应该在客户端中使用UTF-8 编码,而不是Unicode 等价物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2023-03-14
      • 2012-09-08
      • 2021-03-12
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多