Tamam, şu anda PHP/MySQL/UTF-8/Unicode cehennemdeyim!UTF8, PHP -> MySQL verir. Veritabanında soru işaretleri mi alıyorsunuz?
My çevre: MySQL: 5.1.53 Sunucu karakter takımı: latin1 Db karakter takımı: latin1 Müşteri karakter takımı:. Latin1 Conn karakter takımı: 5.3.3
Benim PHP dosyaları:
PHP latin1 ASCII dosyaları değil, UTF-8 formatı olarak kaydedilir. Benim PHP kodunda
Yapmam veritabanı bağlantısı aşağıdaki yapmak:
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)
);
biçimi/benim MySQL veritabanı oluşturmak geçerli:
DEĞİL
app_languages
VARSA TABLO OLUŞTURMA (language_id
int (10) imzasız NOT NULL,app_id
int (10) imzasız NOT NULL,description
tinytext harmanlama utf8_unicode_ci, İLK ANAHTAR (language_id
,app_id
) ) MOTOR = MYISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
benim PHP kodundan oluşturulan SQL ifadeleri
şuna benzer:| 69 | 2055 | ????????????????? |
| 56 | 2055 | ?????? ????? ????? ????? |
| 28 | 2055 | Arapski sportske vijesti i informacije |
| 42 | 2055 | Arabe des nouvelles sportives et d\'information |
| 91 | 2055 | ?????????? |
yanlış yapıyorum:
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 çıktı bu benim veritabanında görünür ??
P.S. Putty'yi SSH'ye doğrudan veritabanı sunucusuna ve komut satırından kullanarak unicode/multi-lingual insert ifadelerinden birini yapıştırın. Ve başarılı bir şekilde çalışıyorlar !?
Bunun üzerine dökebileceğiniz herhangi bir ışık için teşekkürler, beni çıldırtıyor.
Alkış, Jason
Hayır, bu doğru değil çünkü yorumlarımda göreceksiniz "PS SSH'yi doğrudan veritabanı sunucusuna ve komut satırından kullanarak unicode/multi-lingual insert ifadelerinden birini yapıştırın. Ve başarılı bir şekilde çalışıyorlar. !?" – Jason
@Jason Putty'nin doğru kodlamayı kullandığını biliyor musunuz? http://thegreyblog.blogspot.com/2009/08/configuring-putty-to-use-utf-8.html – bobo
@bobo, evet Putty'nin kodlamayı nasıl yürüdüğü tam olarak budur, UTF-8'dir. – Jason