MySQL数据库问号,而不是希伯来字符..?
我试图用PHP和MySQL构build一个购物车。 我在MySQL中的数据库是utf8,我的数据库表是utf8,
我怎样才能使用希伯来字符?
我能够通过执行以下操作来解决这个问题:
- 数据库归类必须是
utf8_general_ci
- 与希伯来语表的整理必须是
utf8_general_ci
- 在你的php连接脚本中放置
header('Content-Type: text/html; charset=utf-8');
- 在xhtml头标签中放置
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- 在连接脚本中select数据库后,把
mysql_query("SET NAMES 'utf8'");
经过大量的工作,我发现一个解决scheme,总是工作..:没有SET_NAMES。
在conn.inc.php
文件中,在select数据库并连接到它之后,执行以下操作:
if(!mysqli_set_charset($conn, 'utf8')) { echo 'the connection is not in utf8'; exit(); }
…在HTML中总是使用字符集utf-8;
这为我解决了。 没有必要使用set_names()
,这是好的,但它让我恼火。
你可以像这样在代码中使用PDO:
$db = new PDO($config['DSN'], $config['dbUserName'], $config['dbPassword']); $db->exec("SET NAMES 'utf8'");
确保在'utf8'中包含单引号。
如果这是一个编码问题(听起来像是这样),这个查询将有助于:
SET NAMES utf8
执行此查询(例如mysql_query("SET NAMES utf8")
),然后再移动任何数据。
更多信息
问号在哪里出现? 这可能是一个编码问题,而不是在数据库中。
要将非ASCII字符存储在数据库列中,您需要使用特定字符集来定义该列。 您可以指定3个级别的字符集:数据库,表和列。 例如:
CREATE DATABASE db_name CHARACTER SET utf8 CREATE TABLE tbl_name (...) CHARACTER SET utf8 CREATE TABLE tbl_name (col_name CHAR(80) CHARACTER SET utf8, ...)
http://www.herongyang.com/PHP/Non-ASCII-MySQL-Store-Non-ASCII-Character-in-Database.html
$ conn-> set_charset( “UTF8”); 使用这个你的dbconnect
mysql_query('SET NAMES utf8')
…..把这个在PHP中