[php] MySQL에서 utf8을 설정 하시겠습니까?


3 Answers

manual :

SET NAMES는 클라이언트가 서버에 SQL 문을 보내는 데 사용할 문자 집합을 나타냅니다.

더 정교하게, (그리고 다시 한번, manual 에서 불필요하게 들어 올렸습니다.)

SET NAMES는 클라이언트가 서버에 SQL 문을 보내는 데 사용할 문자 집합을 나타냅니다. 따라서 SET NAMES 'cp1251'은 서버에 "이 클라이언트의 향후 수신 메시지는 문자 집합 cp1251입니다"라고 알려줍니다. 또한 서버가 결과를 클라이언트로 보내기 위해 사용해야하는 문자 집합을 지정합니다. 예를 들어 SELECT 문을 사용하는 경우 열 값에 사용할 문자 집합을 나타냅니다.

Question

나는 종종 MySQL을 사용하는 PHP 스크립트에서 이와 비슷한 것을 본다.

query("SET NAMES utf8");   

나는 어떤 프로젝트에 대해서도이 일을 한 적이 없어서 그것에 대해 몇 가지 기본적인 질문이있다.

  1. PDO로만 수행되는 것입니까?
  2. PDO가 아닌 경우, 그 목적은 무엇입니까? 나는 그것이 mysql을위한 인코딩을 설정하고 있다는 것을 깨닫는다. 그러나 나는 그것을 사용하지 않아야했기 때문에 왜 그것을 사용하고 싶습니까?



뿐만 아니라 PDO. SQL에서 '????' 기호, 당신의 미리 설정 charset (희망 UTF-8) 정말 권장 :

if (!$mysqli->set_charset("utf8")) 
 { printf("Can't set utf8: %s\n", $mysqli->error); }

또는 프로 시저 스타일을 통해 mysqli_set_charset($db,"utf8")




SQL 쿼리를 통해 이렇게하는 대신 php 함수를 사용하십시오 : mysqli :: set_charset mysqli_set_charset

Note:

This is the preferred way to change the charset. Using mysqli_query() to set it (such as SET NAMES utf8) is not recommended.

자세한 내용은 MySQL 문자 집합 개념 섹션을 참조하십시오.

http://www.php.net/manual/en/mysqli.set-charset.php




이 쿼리는 데이터베이스에서 데이터를 만들거나 업데이트하는 쿼리 전에 작성해야합니다.이 쿼리는 다음과 같습니다.

mysql_query("set names 'utf8'");

헤더에 사용하는 인코딩을 작성해야합니다. 예를 들어 utf-8을 사용하는 경우 헤더에이 코드를 추가하면 Internet Explorer에 문제가 생깁니다.

그래서 귀하의 페이지는 이렇게 보입니다.

<html>
    <head>
        <title>page title</title>
        <meta charset="UTF-8" />   
    </head>
    <body>
    <?php
            mysql_query("set names 'utf8'");   
            $sql = "INSERT * FROM ..... ";  
            mysql_query($sql);
    ?>    

    </body>
<html>





Related