2011-11-23 6 views
2

osCommerce 2.2 MST에 약간의 추가 기능이 있습니다. osCommerce 자체는 ISO-8859-1에 있습니다. 추가 된 테이블은 현재 utf8_general_ci에있는 MySQL 데이터베이스에 있습니다 (다른 테이블은 모두 latin1_swedish_ci에 있음). 데이터베이스에서 데이터를 UTF-8로 전에 제가 언급했듯이 PHP 파일 나는 출력UTF-8 및 ISO-8859-1 : 대부분의 시간 동안 작동하는 이유는 무엇이며 때로는 그렇지 않은 이유는 무엇입니까?

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 

를 호출하고 있습니다. 그러나 ö, ä, ü와 같은 글자가 올바르게 표시됩니다. 어떻게 이럴 수있어? utf8_decode이 없어야합니다. 그러나 문자 is는 ?으로 표시됩니다. 나는 이것을 결과 배열로 직접 얻는다. phpmyadmin으로 질의를하면 올바르게 표시됩니다.

모든 글자가 올바르게 표시되도록 관리했습니다 (스크립트의 한 섹션에만 표시). 이것은 내가 또한

header('content-type: text/html; charset=utf-8'); 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 

을 추가하지만 다른 문제가 발생 나는 PHP 스크립트에서

mysql_query("SET NAMES 'utf8'"); 

을 만든 것입니다.

UTF-8의 데이터가 표시되지 않아야하는 이유를 알고 싶습니다. 그리고 편지 č를 올바르게 표시하려면 어떻게해야합니까?

시스템이 다소 복잡합니다. 어디에서 어떻게 잘못 볼 수 있습니까?

+1

좋은 시작은 PHP Charset FAQ입니다. http://kore-nordmann.de/blog/php_charset_encoding_FAQ.html – hakre

+1

다른 훌륭한 리소스 http://developer.loftdigital.com/blog/php-utf-8-cheatsheet – Aerik

+0

@hakre : 좋은 링크! 감사! 나는이 문제에 대한 해결책을 찾기 위해 몇 시간을 기다리기 전에 내가 이것을 가지고 있기를 바랐다. ... – testing

답변

2

데이터가 통과하는 인코딩/디코딩 순서를 알지 못하지만 ö, ä 및 ü와 같은 글자가 옳다는 이유는 is가 아니라면 ö, ä 및 ü입니다. ISO-8859-1로 인코딩 할 수 있지만 č 수 없습니다. HTML에서 ISO-8859-1 대신 UTF-8을 사용하여 č을 표시해야합니다.

+0

나는 오래 전에 그것을 시도했지만, 나는 일하지 않았다. 나는 아직도''를 얻는다. 그러나 č는 ISO-8859-1의 문자 집합에 없기 때문에 나는 옳다고 생각합니다. 문제는 이것이 어디에 정의되어 있는가? 헤더 코드를 추가 할 수 있지만 ö 및 č는 더 이상 작동하지 않습니다. 나는'SET NAMES 'utf8''로 클라이언트 연결을 편집하지만 다른 많은 것들은 작동하지 않습니다. 모든 쿼리에 대한 클라이언트 연결을 변경하지 않고이 작업을 수행 할 수 있습니까? 하나의 쿼리에 대해서만이 작업을 수행 할 수 있습니까? – testing

+0

내 데이터가 데이터베이스에 UTF-8로 올바르게 저장되었는지 어떻게 확인할 수 있습니까? 쿼리에 phpmyadmin을 사용하면 모든 것이 올바르게 표시됩니다. phpMyAdmin은''을 사용하므로 데이터가 정확하다고 생각합니다. – testing

+0

문제를 일으키는 유일한 문자가,이면 생성 된 HTML의 모든 문자를 문자 이스케이프 시퀀스 'č'또는 'č'로 바꿀 수 있습니다. (한 명 이상의 캐릭터가 문제를 일으키더라도, 너무 많지 않다면 이것은 가장 쉬운 방법 일 것입니다.) –