如何在php中的mysql数据库中插入希伯来语值

时间:2013-05-30 12:50:45

标签: php mysql collation

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

  
    

×ש“השד×>עשד

  

默认情况下,表的校对是latin1_swedish_ci,我也尝试更改为utf-8_general_ci,hebrew_bin,hebrew_general_ci,但结果仍然相同。

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

<meta charset="UTF-8">

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

mysql_query("SET NAMES utf8");

我在phpmyadmin中查看结果。

9 个答案:

答案 0 :(得分:16)

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

  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'");
    
  6. The first answer helped me and I took it from there

答案 1 :(得分:6)

设置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 />";} 

答案 2 :(得分:2)

检查collat​​ion_connection:

show variables like '%collation%'

答案 3 :(得分:1)

你应该确保:

  1. 你在php中设置utf-8
  2. 您在连接中使用utf-8
  3. 您的表格定义为utf-8_general_ci
  4. 特定字段定义为utf-8_general_ci
  5. 然后你应该能够在phpadmin中正确地查看希伯来语或任何其他语言

答案 4 :(得分:0)

我想说,为了确保将值传递给数据库,我会在插入数据库并打印值之前添加一个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">
...

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

答案 5 :(得分:0)

我同意将其设置为utf-8选项,但是如果由于某种原因你不能再将其转换为base64。不是最好的(很长一段路),但可以帮助某人走出困境。

答案 6 :(得分:0)

为了将来使用,如果您遇到此问题并且使用的是PDO而不是mysqli,则需要这样做:

  1. 数据库(所有)整理必须 utf8_general_ci
  2. 使用希伯来语将表格整理设置为 utf8_general_ci
  3. 在HTML“head”标记中,添加以下内容:&lt; meta charset =“utf-8”&gt;
  4. 在您的PHP连接文件中,在连接后添加查询此行: conn-&gt; exec(“set names utf8”);
  5. 如果您正在使用类,那么您可能会将“conn”作为变量。 在这种情况下,你将不得不像这样使用它: $ this-&gt; conn-&gt; exec(“set names utf8”);
  6. 希望这有助于未来有这个问题和使用PDO的人。 祝你好运。

答案 7 :(得分:0)

最终帮助我的是将charset添加到连接中:

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

答案 8 :(得分:-1)

我想我知道了: 这是我的代码:

interface{}