UTF8 sorunları PHP ->

0 Cevap php

Tamam, ben PHP/MySQL/UTF-8/Unicode cehennemde şu anda duyuyorum!

My environment: MySQL: 5.1.53 Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1

PHP: 5.3.3

Benim PHP dosyaları UTF-8 formatında değil, ASCII dosyaları olarak kaydedilir.

Ben veritabanı bağlantısı yaparken benim PHP kodu ben aşağıdakileri yapın:

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)
);

/ Benim MySQL veritabanı oluşturmak biçimi:

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;

Benim PHP kodu oluşturulan SQL ifadeleri şöyle:

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, "アラビア語のスポーツニュースと情報")

Oysa, bu çıkış olarak benim veritabanında görünür:

|          69 |   2055 | ?????????????????                               |
|          56 |   2055 | ?????? ????? ????? ?????                        |
|          28 |   2055 | Arapski sportske vijesti i informacije          |
|          42 |   2055 | Arabe des nouvelles sportives et d\'information |
|          91 |   2055 | ??????????                                      |

Ben yanlış ne yapıyorum?

P.S. Biz veritabanı sunucusuna doğrudan SSH Macun kullanımı ve komut satırı üzerinden unicode / çok-dilli insert tabloların birini yapıştır yapabilirsiniz. Ve başarılı iş!?

Bu kulübe herhangi bir ışık için teşekkürler, bu beni deli ediyor.

Alkış, Jason

0 Cevap