OK, jestem obecnie w piekle PHP/MySQL/UTF-8/Unicode!Problemy z UTF8 PHP -> MySQL. Uzyskiwanie znaków zapytania w bazie danych?
Moja okolica: MySQL: 5.1.53 Server CharacterSet: latin1 Db CharacterSet: latin1 CharacterSet Client. Latin1 Conn CharacterSet: latin1
PHP: 5.3.3
Moje pliki PHP są zapisywane w formacie UTF-8, a nie w plikach ASCII.
W moim kodu PHP, kiedy zrobić połączenie z bazą danych I wykonaj następujące czynności:
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)
);
Format/tworzyć z mojej bazy danych MySQL:
CREATE TABLE IF NOT EXISTS
app_languages
(language_id
int (10) unsigned NOT NULL,app_id
int (10) unsigned NOT NULL,description
koniczyny tinytext utf8_unicode_ci, PRIMARY KLUCZ (language_id
,app_id
) ) SILNIK = USTAWIENIA CHARAKTERU MYSZY = UTF8 COLLATE = utf8_unicode_ci;
instrukcje SQL, które są generowane z mojego kodu PHP wyglądać tak:
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, "アラビア語のスポーツニュースと情報")
Jednak wyjście pojawia się w mojej bazy danych, jak ten:
| 69 | 2055 | ????????????????? |
| 56 | 2055 | ?????? ????? ????? ????? |
| 28 | 2055 | Arapski sportske vijesti i informacije |
| 42 | 2055 | Arabe des nouvelles sportives et d\'information |
| 91 | 2055 | ?????????? |
Co robię źle ??
P.S. Możemy użyć Putty do SSH bezpośrednio do serwera bazy danych i poprzez wiersz polecenia Wklej jedną z instrukcji Unicode/Multi-Lingual. I działają z powodzeniem !?
Dzięki za światło, które można rzucić na to, doprowadza mnie do szału.
Pozdrawiam, Jason
Nie, to nie jest poprawne, ponieważ zobaczysz w moich komentarzach "PS Możemy użyć Putty do SSH bezpośrednio do serwera bazy danych i poprzez wiersz polecenia Wkleić jedną z instrukcji Unicode/Multi-Lingual. !? " – Jason
@Jason Czy jesteś pewien, że Putty używa właściwego kodowania? http://thegreyblog.blogspot.com/2009/08/configuring-putty-to-use-utf-8.html – bobo
@bobo, tak to dokładnie w jaki sposób Putty obsługuje kodowanie, to jest UTF-8. – Jason