2010-01-18 14 views
2

내 LAMP 앱에서 사용자가 MS 워드와 같은 다른 응용 프로그램의 입력을 잘라내어 붙여 넣기하는 경우가 있습니다.mysql 문자 인코딩 문제

모든 웹 페이지는 콘텐츠 유형 태그를 통해 UTF로 표시되도록 설정됩니다. 내 PHP 스크립트는 웹 폼의 데이터를 UTF-8로 설정된 문자 인코딩을 가진 mysql 테이블에 저장합니다.

html에는 올바르게 표시되는 아포스트로피 문자가 있지만 Linux 명령 프롬프트에서 본 mysql 테이블에는 â €로 표시됩니다.

html 페이지와 mysql 테이블이 모두 동일한 인코딩을 사용하는 경우 왜 그 문자의 렌더링이 다른가요?

답변

0

아마도 Linux 명령 프롬프트에서 해당 문자를 지원하지 않는 글꼴을 사용하기 때문일 수 있습니다.

Windows 'cmd는 기본적으로이 cmdlet을 지원하지 않는 글꼴을 사용합니다. 안심해도 데이터는 원하는 방식으로 저장됩니다.

+0

확실히 아직 내가 탐험하지 않은 가능성이 있으므로 그 대답을 좋아합니다. 나는이 문자 인코딩 문제에 대해 내 마음을 감싸는 데 정말로 힘든 시간을 보내고있다. 텍스트가 전달하는 모든 프로그램에는 인코딩을 잘못 해석하거나 변경하는 기능이 있습니다. 필자의 경우, 웹 양식의 컨텐츠는 제대로 표시되지 않는 이메일 클라이언트로 끝납니다. 그래서, 그 경로는 클립 보드 -> html 형식 -> 아파치 -> PHP -> MySQL -> PHP -> 이메일 서버 -> 이메일 클라이언트와 같은 것입니다. 정말 어디서나 잘못 될 수 있습니다. 이러한 문제를 어떻게 해결합니까? –

+0

나는 그것을 표시하기 전에 유사한 문자로 대체하기 위해 함수를 통해 실행합니다. 예 : Word의 멋진 따옴표는 단순한 따옴표로 바뀝니다. 이 방법은 사용자가 가지고있는 OS/브라우저/장치/설치된 글꼴을 알 수 없기 때문에 더 안전합니다. – andyk

+0

.. 또 다른 방법은 데이터베이스에 입력하기 전에 입력 내용의 유효성을 검사하는 것입니다. (양식에 잘 알려진 WYSIWYG 텍스트 편집기를 사용하는 경우 일반적으로 'Word에서 붙여 넣기'기능이 자동으로 수행됩니다.)이 텍스트는 이미 표시되기 때문에 아무 것도 표시하기 전에 걱정할 필요가 없습니다. 안전한 충분한 상태. – andyk