如何将希伯来语值插入 php 中的 mysql 数据库
Posted
技术标签:
【中文标题】如何将希伯来语值插入 php 中的 mysql 数据库【英文标题】:How to insert an hebrew value into a mysql db in php 【发布时间】: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 同样的结果。
这可能会有所帮助***.com/questions/5287821/…
尝试在不使用 phpMyAdmin 的情况下获取和显示数据,因为它还需要具有适当的编码设置。
【参考方案1】:
检查 collation_connection:
show variables like '%collation%'
【讨论】:
对不起,我没听懂你的回答。你能添加更多细节吗?谢谢。 您需要进行一些故障排除,执行我在您的 PHP 脚本中建议的查询(并显示结果)以确保所有排序规则设置正确。【参考方案2】:您应该确保:
-
你在php中设置了utf-8
您在连接中使用 utf-8
您的表定义为 utf-8_general_ci
具体字段定义为utf-8_general_ci
那么您应该能够在 phpadmin 中正确查看希伯来语或任何其他语言
【讨论】:
【参考方案3】:我已经解决了我的希伯来语问题。这是一个数据库和表行/字段编码问题。这是我使用的解决方案。我从另一个答案中获得了帮助,下面给出了链接,以防有人需要。
-
数据库排序规则必须是
utf8_general_ci
。
希伯来语表格的排序规则必须是utf8_general_ci
。
在PHP连接脚本中放
header('Content-Type: text/html; charset=utf-8');
在xhtml的head标签里放
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
如果您使用的是 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,你需要这样做:
-
数据库(all of it)排序规则必须是 utf8_general_ci。
将带有希伯来语的表格的排序规则也设置为 utf8_general_ci。
在 HTML 的“head”标签中,添加:
在您的 PHP 连接文件中,添加 连接后查询此行:conn->exec("set names utf8");
如果您使用类,那么您可能会将“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));
【讨论】:
以上是关于如何将希伯来语值插入 php 中的 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SELECT ALL 值或 SELECTED 复选框值插入 mysql 中的不同列?
如何使用PHP Wordpress将沙箱Paypal返回值插入MySQL表?