좋아, 현재 PHP/MySQL/UTF-8/유니 코드 지옥에있어!UTF8은 PHP -> MySQL을 발행합니다. 데이터베이스에 물음표가 표시됩니까?
내 환경 : 의 MySQL : 5.1.53 서버 characterset : 라틴 DB의 characterset : 라틴 클라이언트 characterset :. 라틴 코네티컷 characterset : 5.3.3
내 PHP 파일 :
PHP 라틴 ASCII 파일이 아닌 UTF-8 형식으로 저장됩니다. 내 PHP 코드에서
내가 할 데이터베이스 연결은 다음합니다
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)
);
형식은/내 MySQL 데이터베이스의 생성은 다음과 같습니다
하지가
app_languages
을 존재하는 경우 테이블 만들기 (language_id
int (10) 부호없는 NOT NULL,app_id
int (10) 부호 없음 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 문
는 다음과 같다 :| 69 | 2055 | ????????????????? |
| 56 | 2055 | ?????? ????? ????? ????? |
| 28 | 2055 | Arapski sportske vijesti i informacije |
| 42 | 2055 | Arabe des nouvelles sportives et d\'information |
| 91 | 2055 | ?????????? |
내가 잘못 뭐하는 거지 :
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, "アラビア語のスポーツニュースと情報")
그러나, 출력이로 내 데이터베이스에 나타납니다 ??
P. 우리는 SSH에 퍼티를 데이터베이스 서버에 직접 사용하고 커맨드 라인을 통해 유니 코드/다국어 삽입 문장 중 하나를 붙여 넣을 수 있습니다. 그리고 그들은 성공적으로 작동합니다!?
어떤 빛을 주셔서 감사합니다.
건배, 제이슨
내 의견에 표시됩니다. "PS 아닙니다. 데이터베이스 서버와 명령 줄을 통해 직접 SSH에 퍼티를 사용할 수 있습니다. 유니 코드/다국어 삽입 명령문 중 하나를 붙여 넣습니다. !? " – Jason
@ Jason 퍼티가 올바른 인코딩을 사용하고 있습니까? http://thegreyblog.blogspot.com/2009/08/configuring-putty-to-use-utf-8.html – bobo
@bobo, 맞습니다. 정확히 퍼티가 인코딩을 처리하는 방법입니다. UTF-8입니다. – Jason