문제

나는 아직도 PHP와 MySQL에 대해 배우고 있고 여기서 문자 세트 설정 방법에 문제가 있다는 것을 알고 있지만 여기와 웹에서 내가 무엇을 해야 하는지 읽어보면 잘 알 수 없습니다.

PHP 5, MySQL 5를 사용하여 표준 LAMP를 설치했습니다.저는 모든 것을 기본값으로 설정했습니다.내 사용자 중 일부가 데이터베이스에 설명을 입력하면 일부 문자가 잘못 표시됩니다. 현재 대부분 아포스트로피와 엠 대시가 있습니다.MySQL에서는 아포스트로피가 ''로 표시됩니다.페이지에도 이런 방식으로 표시됩니다(사용자 설명을 출력하기 위해 htmlentities를 사용하고 있습니다).

phpMyAdmin에서 내 MySQL 문자 집합이 UTF8-유니코드라고 나와 있습니다.

내 데이터베이스에서 내 테이블은 모두 기본 Latin1-Swedish-ci로 설정되어 있습니다.

내 웹 페이지에는 모두 메타 http-equiv="Content-Type" content="text/html;문자셋=utf-8"

사이트의 http 헤더를 보면 다음과 같은 내용이 표시됩니다.컨텐츠 타입:텍스트/html

초보자처럼 나는 일부 페이지에서 상황이 이상해지기 시작할 때까지 문자 세트를 전혀 고려하지 않았습니다.그렇다면 모든 것을 utf-8로 변환하는 것이 가장 합리적이며 이것이 내 PHP 코드에 영향을 미칩니까?아니면 모든 것을 라틴어로 번역해야 합니까?그리고 데이터베이스에 가서 이러한 이상한 코드를 교체해야 합니까? 아니면 문자 세트를 올바르게 설정하면 마술처럼 표시됩니까?지금까지 내가 한 모든 조작은 도움이 되지 않았습니다(http 헤더를 utf-8로 설정하고 라틴어도 시도했습니다).

도움이 되었습니까?

해결책

http://www.phpwact.org/php/i18n/charsets

그 사이트는 UTF-8에서 모든 것이 잘 플레이하는 방법에 대한 많은 좋은 조언을 주었다.

또한 UTF 친화적이므로 HTMlentities에서 HTMLSpecialchars로 전환하는 것을 권장했습니다.

요점은 모든 것이 같은 언어를 이야기하고 있는지 확인하는 것입니다. 데이터베이스, 데이터베이스 연결, PHP, 페이지는 UTF8에 있습니다 (메타 태그와 헤더가 있어야 함).

다른 팁

이 문제를 정말로 이해하고 싶다면 읽기 시작합니다. 이 기사는 mysql.com에서. 기본적으로, 당신은 모든 퍼즐 조각이 UTF-8 유니 코드를 기대하기를 원합니다. PHP 측면에서는 다음과 같은 작업을 원합니다.

<?php header("Content-type: text/html; charset=utf-8");?>
<html>
  <head>
     <meta http-equiv="Content-type" value="text/html; charset=utf-8">

삽입 쿼리를 실행할 때 테이블의 문자 인코딩을 모두 확인하려고합니다. 그리고 쿼리를 실행하는 인코딩은 UTF-8입니다. 쿼리를 실행하여 후자를 달성 할 수 있습니다 SET NAMES utf8 삽입 쿼리를 실행하기 직전에

귀하의 질문을 모두 이해하지 못해 죄송합니다.그러나 질문의 ​​일부가 "UTF-8인지 아닌지?"인 경우 대답은 다음과 같습니다."물론 UTF-8입니다!"

당신은 확실히 나중에보다는 지금 물건을 정리하고 싶습니다. 가장 중요한 프로그래밍 규칙 중 하나는 나쁜 생각을 계속하지 않는 것입니다. 더 깊이 자신을 파지 마십시오!

Latin1과 UTF-8이 호환되므로 손으로 포함 된 데이터를 조작하지 않고도 테이블을 UTF-8을 사용하도록 변환 할 수 있습니다. MySQL 은이 부분을 정리할 것입니다.

그런 다음 모든 것이 UTF-8을 말하는지 확인하는 것이 중요합니다. HTTP 헤더를 Apache에 설정하거나 메타 태그를 사용합니다. 이는 HTML 출력이 UTF -8이라고 브라우저에 표시됩니다.

이를 염두에두고 보내는 모든 데이터가 실제로 UTF-8인지 확인해야합니다! PHP/HTML 파일을 UTF-8으로 저장하도록 IDE를 구성하십시오. 마지막으로 PHP가 MySQL에 UTF -8 연결을 사용하고 있는지 확인하십시오. 연결 후이 쿼리를 발행하십시오.

SET NAMES 'utf-8';
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top