2015-01-30 4 views
0

이것은 작은 mysql 질문입니다. 그러나 나는 최근에 질문을 읽는 동안 이해할 수없는 질문을 발견했습니다.Mysql - N '...'을 삽입하십시오.

mysql_query("SET CHARACTER SET utf8"); 
mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES (N'$email',N'$pass',N'$fname',N'$lname',N'$phone',N'$city')"); 

N '...'의미는 삽입 쿼리입니까? UTF8을 다룰 때 이것이 필요합니까? 나도 같은 쿼리를 작성해야한다면

, 내가 쓴 것 :

mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES ('$email','$pass','$fname','$lname','$phone','$city')"); 

이 둘 사이의 차이는 무엇입니까?

+0

설명서에 설명되어 있습니다. [국가 별 문자 세트] (http://dev.mysql.com/doc/refman/5.7/en/charset-national.html) – axiac

답변

0

NVarchar은 유니 코드에 사용되는 데이터 유형입니다. 데이터베이스가 다국어 데이터를 저장하지 않으면 Varchar를 계속 사용할 수 있습니다. 예를 들면 : N'abc '(귀하의 경우)는 단순히 문자열을 유니 코드로 변환합니다.

기본적으로 SQL Server는 Windows-1252 문자 코드를 varchar에 사용합니다. 라틴 기반 언어 (영어, 독일어, 프랑스어 등)의 대부분의 문자를 포함하지만 비 라틴 기반 언어 (폴란드어, 러시아어 등)에는 문자를 포함하지 않습니다. 위에서 언급 한 것처럼 nvarchar는 누락 된 문자가 포함 된 유니 코드 용이므로 문제를 해결하는 데 사용됩니다. 비용이 많이 들지만 varchar보다 nvarchar를 저장하는 데 2 ​​배의 공간이 필요합니다.

문자열 앞에 N을 넣으면 문자가 nvarchar 열에 배치되기 전에 유니 코드로 변환됩니다. 대부분 N을 남겨두면 괜찮을 것이지만 추천하지는 않을 것입니다. 미안보다 안전 할 것이 훨씬 낫습니다.

+0

감사합니다. 그렇지만'SET CHARACTER SET utf8' 방식을 바꾸십시오 mysql 처리 varchar/nvarchar 물건? – fluminis

+0

예 .. [this] (http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html) 체크 아웃 .... – SMA

관련 문제