2010-11-30 6 views
4

메신저에 대한 삽입 utf8 문자 여기에 정말 스트레스 문제가 직면 .. 나는 모든 DB와 테이블 utf8_general_ci 있지만 삽입 또는 업데이트하려고 할 때 모든 UTF-8있는 내가 볼 수있는 하나의 PHP 스크립트는 심볼입니다 ..하지만 phpMyAdmin에서 편집 한 단어가 올바르게 표시됩니다 .. php에서 내 문자열에 utf8_decode() 함수를 실행하면 작동하도록 만들 수 있지만 계획하지는 않습니다. 엉망이고 있기 때문에 그 일을하지 않고 일을해야 할 : 여기에 Smysql (utf8 데이터 정렬, charset 및 nameset 함께)

하면이를 테스트하기 위해 사용하는 기본 코드 메신저입니다 :

<?php 
$conn=mysql_connect("localhost","root","root") 
    or die("Error"); 
mysql_select_db("mydb",$conn) or 
    die("Error"); 
mysql_query("UPDATE `mydb`.`Clients` SET `name` = '".utf8_decode("Araña")."' WHERE `Clients`.`id` =25;", 
    $conn) or die(mysql_error()); 
mysql_close($conn); 
echo "Success."; 
?> 

이 무엇 인 내가 "A는 ± AraÃ"UTF-8 인

답변

1

± Araà 대신 Araña의

, 난 얻을 : 나 디코드의 PHP utf8_decode 기능을 UTF8 없다면 얻는다. "Ã ±"문자는 스페인 ñ가 UTF-8로 인코딩 된 두 바이트를 나타냅니다. 읽는 내용이 무엇이든 UTF-8을 처리하지 않고 ISO-8859-1로 표시합니다.

4

여러 번 동일한 문제가 발생했습니다. 때로는 선택하는 데이터베이스 링크의 유형이 내가 삽입하거나 다른 시간에 사용하는 것과 동일한 유형이 아니기 때문에 때로는 파일 데이터에서 데이터베이스로 연결되기 때문입니다.

나중에 인스턴스의 경우 mysql_set_charset('utf8',$link);이 마법 답변입니다.

mysql_select_db를 통해 데이터베이스를 선택하면 바로 mysql_set_charset을 호출하십시오.

당신은 정렬이 아닌 문자 집합과 관련이있다 언급 DDL http://php.net/manual/en/function.mysql-set-charset.php

+2

내 하루를 만들어 줘서 고마워! – jtanmay

+0

맥주를 사주세요. 당신은 끝없는 고통의 시간을 해결했습니다. – AlBeebe

1

@ref. 올바른 문장은 다음과 같습니다

ALTER TABLE Clients CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

당신은 여전히 ​​(어떤 드라이버 PHP 사용 libmysql 또는) 다시 ISO-8859에 데이터를 트랜스 코딩 있지 않은지 클라이언트 라이브러리를 확인해야합니다. mysql_set_charset ('utf8')은 명시 적으로 클라이언트 인코딩을 UTF-8로 설정합니다. 또는 SET NAMES UTF8을 보낼 수 있습니다. 데이터베이스에 연결 한 직후. 이를 암시 적으로하기 위해 my.cnf [client] 블록을 변경하여 utf-8을 클라이언트 문자 인코딩으로 사용하고 /etc/init.d/mysql reload를 적용 할 수 있습니다. 어느 쪽이든, 클라이언트가 당기는 결과를 언쟁하지 않도록하십시오.

[클라이언트] 기본 문자 집합 = UTF8

당신은 mbstrings를 사용하는 경우 utf8_decode를 사용할 필요가 없습니다. 다음 php.ini의 구성은 PHP 측에서 UTF-8 지원을 확인해야합니다 : 당신은 HTML에서 결과를 표시 할 때

mbstring.internal_encoding = utf-8 
mbstring.http_output = utf-8 
mbstring.func_overload = 6 

마지막으로, 페이지의 인코딩이 명시 적으로 UTF-8인지 확인

.