12 가지 유사한 질문이 있다는 것을 알고 있습니다. 그러나이 경우 제안 된 해결책은 없습니다. 내가 페이지에 그것을 밖으로 인쇄 할 때UTF-8 인코딩을 사용하는 페이지는 UTF-8 인코딩을 사용하여 MySQL로 데이터를 전송하지만 엔트리가 스크램블 됨
$hometeam="Крылья Советов"; //Cyrrilic string
이 제대로 출력합니다 :
나는대로 초기화 된 페이지에 PHP 변수를 가지고있다. 따라서 echo $hometeam
은 문자열 Крылья Советов을 표시합니다.
헤더의 콘텐츠 메타 태그를 다음과 같이 설정 : 페이지의 맨 처음에,
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
을 그리고, 내가 가지고있는 (내 검색에서 발견 된 솔루션 중 하나에 제안) 다음 :
ini_set('default_charset', 'utf-8');
이렇게 좋을 것입니다.
이 테이블을 저장하려고하고있는 MySQL 테이블과 문제의 열은 utf8_bin을 인코딩으로 사용합니다. phpMyAdmin으로 가서 Крылья Советов을 수동으로 입력하면 필드에 올바르게 저장됩니다. 그러나
, 나는 다음과 같은 기본 쿼리를 사용하여 페이지에 쿼리를 저장하려고하면
MySQL의 항목은 다음과 같습니다mysql_query("insert into tablename (round,hometeam) values ('1','$hometeam') ");
:
c390c5a1c391e282acc391e280b9c390c2bbc391c592c391c28f20c390c2a1c390c2bec390c2b2c390c2b5c391e2809ac390c2bec390c2b2
그래서 무슨 일이 일어나고 있는지 이리? 페이지에서 모든 것이 정상이라면, MySQL 자체에서 모든 것이 정상입니다. 문제는 어디에 있습니까? UTF-8로 인코딩 된 문자열을 유지하도록 쿼리 자체에 추가해야하는 것이 있습니까?
데이터베이스에 연결 한 후 페이지 상단에 mysql_set_charset('utf8');
을 설정했음을 유의하십시오.
편집 : 그 목록 2 라틴 년대이 있기 때문에, 여기에 뭔가가있을 수처럼
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
이 보인다 : 쿼리 SHOW VARIABLES LIKE "%character_set%"
를 실행하면 다음과 같은 수 있습니다. 어떻게 생각해?
또한 키릴 문자 문자열을 phpMyAdmin에 직접 입력하면 처음에는 괜찮아 보입니다 (저장 한 후에 올바르게 표시됩니다). 하지만 테이블을 다시로드하면 삽입 된 것과 같이 16 진수로 표시됩니다. 이 문제에 관한 잘못된 정보에 대해 사과드립니다. 결국, 문제는 phpMyAdmin 또는 데이터베이스 자체에 문제가 있음을 의미합니다.
편집 # 2 :이 무엇인지 show create table tablename
반환 :
CREATE TABLE `tablename` ( `id` int(11) NOT NULL AUTO_INCREMENT, `round` int(11), `hometeam` varchar(32) COLLATE utf8_bin NOT NULL, `competition` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT 'Russia', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=119 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
당신이 같은 쿼리 짓을 한거야 : 아마 최고의 아이디어는 테이블 정의의 끝에 다음 명령을 추가, 데이터베이스를 다시 작성하는 것입니다 전에 "의 명칭 'UTF8'을 SET"? http://stackoverflow.com/questions/2159434/set-names-utf8-in-mysql – steven
@steven 나는 그 일을하지 않았다. 아니,하지만 지금은 문제가 동일하게 남아 있으므로 도움이 안된다. . – jovan
@ jovan 소스 코드 파일의 인코딩은 무엇입니까? 비슷한 설정에서 키릴 문자 인코딩으로 테스트하면 빈 문자열 만 얻습니다. utf8로 모든 것이 예상대로 진행됩니다. – Salem