【问题标题】:How to insert an hebrew value into a mysql db in php如何将希伯来语值插入 php 中的 mysql 数据库
【发布时间】:2013-05-26 01:28:56
【问题描述】:

我正在尝试将希伯来语值插入到我的 mysql 数据库中,而不是希伯来语值看起来像那样。

שדגשדכעשד

表格的排序规则默认是latin1_swedish_ci,我也试过改成utf-8_general_ci,hebrew_bin,hebrew_general_ci,结果还是一样。

在我的代码中,我当然使用元标记来配置字符集:

<meta charset="UTF-8">

在我的 php 查询之前,我添加了这一行:

mysql_query("SET NAMES utf8");

我正在 phpmyadmin 中查看结果。

【问题讨论】:

  • 尝试mysql_set_charset('utf8'); 插入值之前。
  • @davidkonrad 同样的结果。
  • 这可能会有所帮助stackoverflow.com/questions/5287821/…
  • 尝试在不使用 phpMyAdmin 的情况下获取和显示数据,因为它还需要具有适当的编码设置。

标签: php mysql collation


【解决方案1】:

检查 collat​​ion_connection:

show variables like '%collation%'

【讨论】:

  • 对不起,我没听懂你的回答。你能添加更多细节吗?谢谢。
  • 您需要进行一些故障排除,执行我在您的 PHP 脚本中建议的查询(并显示结果)以确保所有排序规则设置正确。
【解决方案2】:

您应该确保:

  1. 你在php中设置了utf-8
  2. 您在连接中使用 utf-8
  3. 您的表定义为 utf-8_general_ci
  4. 具体字段定义为utf-8_general_ci

那么您应该能够在 phpadmin 中正确查看希伯来语或任何其他语言

【讨论】:

    【解决方案3】:

    我已经解决了我的希伯来语问题。这是一个数据库和表行/字段编码问题。这是我使用的解决方案。我从另一个答案中获得了帮助,下面给出了链接,以防有人需要。

    1. 数据库排序规则必须是utf8_general_ci
    2. 希伯来语表格的排序规则必须是utf8_general_ci
    3. 在PHP连接脚本中放

      header('Content-Type: text/html; charset=utf-8');
      
    4. 在xhtml的head标签里放

      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      
    5. 如果您使用的是 MySQLi,请在选择数据库后将此代码放入连接脚本中:

      mysql_query("SET NAMES 'utf8'");
      

      如果您使用的是 PDO,请输入

      $conn->query("SET NAMES 'utf8'");
      

    The first answer helped me and I took it from there

    【讨论】:

    • 这很有帮助。谢谢!
    • Sardar Raj 这对我来说是个神奇的地方:mysql_query("SET NAMES 'utf8'") +1
    【解决方案4】:

    设置charset实现解决方案

    创建数据库时

    CREATE DATABASE db_name
     CHARACTER SET utf8
     DEFAULT CHARACTER SET utf8
     COLLATE utf8_general_ci
     DEFAULT COLLATE utf8_general_ci
     ;
    

    或者如果数据库已经创建

    CREATE TABLE table_name(
     ...
     )
     DEFAULT CHARACTER SET utf8   
     COLLATE utf8_general_ci;
    

    OR 写查询时

    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
    
    
    $re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
    while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} 
    

    【讨论】:

      【解决方案5】:

      我想说,为了确保将值很好地传递给数据库,我会在插入数据库之前添加一个 die 语句并打印值,例如:

      die($_POST['thevalue']);
      //insert to database.
      //...
      

      如果一切顺利,那么问题出在数据库方面,在数据库上我会尝试使用这种排序规则

      |希伯来语 | ISO 8859-8 希伯来语 | hebrew_general_ci | 1 |

      根据http://dev.mysql.com/doc/refman/5.0/en/charset-mysql.html 建议。

      但如果在php端失败,原因可能是服务器不支持希伯来语,请确保在html输出文档上使用正确的元标记

      ...
      <meta charset="ISO 8859-8">
      ...
      

      让我们知道它是如何进行的,祝你好运:)

      【讨论】:

        【解决方案6】:

        为了将来的使用,如果你有这个问题并且你使用的是 PDO 而不是 mysqli,你需要这样做:

        1. 数据库(all of it)排序规则必须是 utf8_general_ci
        2. 将带有希伯来语的表格的排序规则也设置为 utf8_general_ci
        3. 在 HTML 的“head”标签中,添加:
        4. 在您的 PHP 连接文件中,添加 连接后查询此行:conn->exec("set names utf8");
        5. 如果您使用类,那么您可能会将“conn”作为变量。 在这种情况下,您将不得不像这样使用它: $this->conn->exec("set names utf8");

        希望这对未来遇到此问题并使用 PDO 的人有所帮助。 祝你好运。

        【讨论】:

          【解决方案7】:

          最终帮助我的是将字符集添加到连接中:

          {"mysql:host=$host;dbname=$db;charset=utf8"}
          

          【讨论】:

            【解决方案8】:

            我想我明白了: 这是我的代码:

            $conn = mysqli_connect($dbserver,$dbuser,$dbpwd,$dbname);
            
            if (mysqli_connect_errno()){
                printf("Connection failed: %s\n" , mysqli_connect_errno());
                exit();
            }
            
            printf("Initial character set: %s\n", mysqli_character_set_name($conn));
            
            /* change character set to utf8 */
            if (!mysqli_set_charset($conn, "hebrew")) {
                printf("Error loading character set hebrew: %s\n", mysqli_error($conn));
                exit();
            } else {
                printf("Current character set: %s\n", mysqli_character_set_name($conn));
            }
            

            【讨论】:

              猜你喜欢
              • 2013-12-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-23
              • 2013-12-16
              • 2019-11-25
              • 2012-12-16
              相关资源
              最近更新 更多