好的,我目前在PHP/MySQL/UTF-8/Unicode地狱!UTF8问题PHP - > MySQL。在数据库中获取问号?
我的环境: MySQL的:53年5月1日 服务器字符集:latin1的 Db的字符集:latin1的 客户端字符集:latin1的 康涅狄格州字符集:latin1的
PHP:5.3.3
我的PHP文件被保存为UTF-8格式,而不是ASCII文件。
在我的PHP代码时,我做的数据库连接我做到以下几点:我的MySQL数据库的
ini_set('default_charset', 'utf-8');
$my_db = mysql_connect(DEV_DB, DEV_USER, DEV_PASS);
mysql_select_db(MY_DB);
// I have tried both of the following utf8 connection functions
// mysql_query("SET NAMES 'utf8'", $my_db);
mysql_set_charset('utf8', $my_db);
// Detect if form value is not UTF-8
if (mb_detect_encoding($_POST['lang_desc']) == 'UTF-8') {
$lang_description = $_POST['lang_desc'];
} else {
$lang_description = utf8_encode($_POST['lang_desc']);
}
$language_sql = sprintf(
'INSERT INTO app_languages (language_id, app_id, description) VALUES (%d, %d, "%s")',
intval($lang_data['lang_id']),
intval($new_app_id),
mysql_real_escape_string($lang_description, $my_db)
);
格式/创建是:
CREATE TABLE IF NOT EXISTS
app_languages
(language_id
int(10)unsigned NOT NULL,app_id
int(10)unsigned NOT NULL,description
tinytext collate utf8_unicode_ci, PRIMARY KEY(language_id
,app_id
) )ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
是从我的PHP代码生成的SQL语句如下所示:
INSERT INTO app_languages (language_id, app_id, description) VALUES (91, 2055, "阿拉伯体育新闻和信息")
INSERT INTO app_languages (language_id, app_id, description) VALUES (26, 2055, "阿拉伯體育新聞和信息")
INSERT INTO app_languages (language_id, app_id, description) VALUES (56, 2055, "בערבית ספורט חדשות ומידע")
INSERT INTO app_languages (language_id, app_id, description) VALUES (69, 2055, "アラビア語のスポーツニュースと情報")
然而,输出的图像显示在我的数据库,因为这:
| 69 | 2055 | ????????????????? |
| 56 | 2055 | ?????? ????? ????? ????? |
| 28 | 2055 | Arapski sportske vijesti i informacije |
| 42 | 2055 | Arabe des nouvelles sportives et d\'information |
| 91 | 2055 | ?????????? |
我在做什么错??
P.S.我们可以使用Putty直接SSH到数据库服务器并通过命令行粘贴一个unicode /多语言插入语句。他们成功地工作!?
非常感谢您提供的任何灯光,这让我发疯。
干杯,杰森
不,这不是正确的,因为你会在我的意见看“PS我们可以用腻子直接SSH连接到数据库服务器,并通过命令行粘贴的Unicode /多语种插入语句之一。他们成功地工作!?” – Jason 2010-12-16 12:08:12
@Jason你确定腻子使用正确的编码吗? http://thegreyblog.blogspot.com/2009/08/configuring-putty-to-use-utf-8.html – bobo 2010-12-16 12:27:18
@bobo,没错这就是腻子究竟是如何处理的编码,这是UTF-8。 – Jason 2010-12-16 12:35:00