2010-12-26 6 views
2

무슨 일이야? :-)
나는 한 가지 문제가 있으며 그걸로 나를 도울 수 있기를 바랍니다.mysql에서 키릴 문자를 인코딩하는 방법은 무엇입니까?

내 친구 중 한 명은 간단한 솔리드 HTML 웹 사이트를 가지고 있으며 약간의 PHP를 구현했습니다. 기사에 대한 CRUD 시스템 ... 문제는 MySQL 데이터베이스에서 키릴 문자를 가져오고 가져 오는 것입니다.

내가 원하는 것은 다음입니다 :
메인 네비게이션에는 이름, ID 및 항목의 순서가 mysql에 배치되고 이름을 가져오고 각 이름을 링크로 넣으려는 일부 분리 된 섹션이 있습니다 . 이름은 키릴 문자로되어 있습니다. 난, PHP mysql_fetch_assoc 기능을 사용하여 데이터베이스 행에서 키릴 문자로 삽입 이름을 표시 할 때

문제

온다, 행의 정렬이 utf8_general_ci이며, ????? 원래 문자 insted와 나는 끝. mysql에 양식을 제출하여 키릴 문자를 제출하면 다음과 같은 결과가 표시됩니다.

어떻게 해결할 수 있습니까, 미리 감사드립니다!? 그 정말 MySQL의 ASSOC가 엉망으로 가져올 경우 :-)

답변

9

당신이 데이터베이스에 연결 한 후이 전화를 확인 확인.

mysql_query("SET NAMES UTF8"); 

또한 HTML 파일에 charset 메타 태그가 UTF-8로 설정되어 있는지 또는 출력 전에 헤더를 보내야하는지 확인하십시오.

header("Content-Type: text/html; charset=utf-8"); 
+0

mysql_query ("SET NAMES UTF8"); 작업을 수행했습니다. 감사. :) 그리고 약 HTML 태그에는 UTF-8로 설정된 메타 태그가 있습니다. – Premke

+0

집합 이름을 실행하는 것은 좋지 않습니다. 내 대답을 참조하십시오. –

+0

^큰 소리로 웃으면 서 :) –

1

당신은 시도해야합니다 : mysql-set-charset

를 문서에서 :

참고 :

이 을 변경할 수있는 좋은 방법입니다 charset. 에 mysql_query()를 사용하여 SET NAMES ..를 실행하십시오. 을 권장하지 않습니다.

또한 파일이 UTF8로 저장되어 있는지 확인하고 iconv_set_encoding/iconv_get_encoding

+0

감사합니다. :) 나는이 기능들에 대해 살펴볼 것이다. 편집 : 함께 했어 : mysql_set_charset ('utf8', $ con); 다시 한번 감사드립니다. :) – Premke

2

내 테이블의 '데이터 정렬'열을 'utf8_bin'으로 인코딩 할 때까지 동일한 문제가 발생했습니다.

사람이 PHP 5.6 전에 기존 프로젝트를 버전 업그레이드를 더 복잡한 문제가 들어
0

와 MYSQL 5.1 PHP 7 & 최신의 MySQL/Percona/MariaDB 등 ...

프로젝트가 utf8_encode를 사용하는 경우

($에 값)을 사용하면 준비중인 값에서 함수를 제거하고 모든 입력에 대해 UTF-8 인코딩을 설정하는 데 사용되는 대답을 사용할 수 있습니다.

--- 또는 ---

는 ($ 값 'UTF-8') mb_convert_encoding와utf8_encode ($ 값)를 교체

PDO의 USERS 시도

여기에 PDO를 사용하는 경우 utf8을 설정하는 두 가지 방법이 있습니다.

$options = [ 
    \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' 
]; 

new \PDO($dsn, $username, $passwd, $options); 

--- 또는 ---

$dsn = 'mysql:host=localhost;charset=utf8;' 

new \PDO($dsn, $username, $passwd); 

내가 확인할 수 mb_convert_encoding ($ 값, 'UTF-8') utf8_unicode_ci에게 작품을 사용하여 SQL 테이블에에 대한 키릴움라우트은.

관련 문제