2010-08-22 6 views
2

나는 우리의 웹 사이트에 이런 문자가 있습니다 (비록 내가 알고하지 않습니다) Fà© mnyomóPHP 및 MySQL의

거리 주소, 다른 언어로 입력합니다. (나는이 주소에는 문자열 변환을 할 수 없지만, 단지 에코) 내가 PHP를 사용하고 있지만 mbstrings없이()하고있어

mysql 4.1.2log 
charset cp1252 West European (latin1) 

다음은 DB 설정입니다.

mysql charset을 cp1252에서 UTF-8로 변경하고 header('Content-Type: text/html; charset=UTF-8');과 같은 것을 사용하여 내 상황을 개선했는지 확인 했습니까? 아니면 cp1252 charset에 저장 되었기 때문에 데이터가 hosed 되었습니까? 원본 데이터베이스는 2002 년에 만들어졌으며 그 이후로 사용/확장되었습니다. 우리는 서버를 업그레이드하고 덤프를 다시 가져 왔지만 부끄럽지 않게 charsets에 많은 생각을주지 않는 것을 인정합니다.

내가 묶인다면 해당 필드의 텍스트를 제거 하겠지만 앞으로는 유니 코드를 지원하고 싶습니다. 따라서 ALTER database_name DEFAULT CHARACTER SET utf8;을 발행하면 이후의 멀티 바이트 인코딩이 올바르게 저장됩니다. 방정식에서 최소한의 저장 공간 (PHP에 대해 걱정하지 마라)?

감사합니다 -

답변

1

1) UTF8 모든 캐릭터 세트를 변환 : 페이지에있는 모든 쿼리 전에

ALTER database_name DEFAULT CHARACTER SET utf8; 

2) 문제이 :

mysql_query("set names 'utf8'"); 

3)이 헤더를 사용

header('Content-Type: text/html; charset=UTF-8'); 

4) 삽입 이 메타 태그 :

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> 

5) 또한이 읽기 : http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html

+0

감사합니다. 저는 5 단계를 모두 마쳤지 만 여전히 같은 결과를 얻었습니다. 가능성을 없애기 위해 localhost (이 상자는 MySQL 5.1.41-3ubuntu12.3-log를 실행 함)의 mysql 모니터에 연결하고 utf8 ('show variables'를 사용하여 반영)에 설정했습니다. - character_set_client, character_set_connection, character_set_database , character_set_results, character_set_server, character_set_system. 결과는 동일합니다. 이것은 mysql 모니터에서 곧바로 나온 것입니다 : Fëmnyomó ut 1 – Hans

+0

5 단계에서 그 링크가 아마 내가하는 일을 끝낼 것입니다. 아마도이 주소를 통해 수동으로 (UTF-8로 모든 것을 변환 한 후) 변경해야 할 것입니다. db를 UTF-8로 변환 한 후 이전 latin1 charset에서 이러한 종류의 문자로 끝날 위험이 있습니까? – Hans

+1

언급 한 위험 때문에 데이터베이스를 백업하십시오. 무엇이든 망치면 복원 할 수 있습니다. – shamittomar