2009-07-29 7 views
43

힌디어 텍스트를 MySQL 데이터베이스에 저장하고 PHP 스크립트를 사용하여 가져 와서 웹 페이지에 표시해야합니다. 다음 작업을 수행했습니다.PHP와 MySQL을 사용하여 유니 코드 문자열 (हिन्दी) 저장 및 표시

데이터베이스를 만들고 인코딩을 UTF-8로 설정하고 데이터 정렬을 utf8_bin으로 설정했습니다. 테이블에 varchar 필드를 추가하고 charset 속성에서 UTF-8 텍스트를 허용하도록 설정했습니다.

그런 다음 데이터를 추가하는 방법을 설정했습니다. 여기에 existing site의 데이터를 복사해야했습니다. 힌디어 텍스트는 다음과 같습니다. सूर्योदय : 05 : 30

이 텍스트를 데이터베이스에 직접 복사하고 PHP 코드 echo(utf8_encode($string))을 사용하여 데이터를 표시했습니다. 이렇게하면 브라우저가 나에게 "??????"라고 표시했습니다.

그러나 브라우저에서 "소스보기"로 이동하여 텍스트에 해당하는 UTF를 삽입하면 सूर्योदय는 सूर्योदय으로 변환됩니다.

데이터베이스에 सूर्योदय을 입력하여 저장하면 완벽하게 변환됩니다.

그래서 내가 알고 싶은 것은 내 데이터베이스에 सूर्योदय를 직접 저장할 수 있고 그것을 가져 와서 PHP를 사용하여 내 웹 페이지에 표시하는 방법입니다.

또한, 아무도 날 ू र ् य ो यय을 입력 할 때 सूर्योदय을 입력하는 스크립트가 있는지 이해할 수 있습니까?

솔루션은 내가 나를 위해 일한 다음 예제 스크립트를 작성

발견. 이 힌디어 UTF 문자열을 저장하는 내 데이터베이스 너무 다른

<html> 
    <head> 
    <title>Hindi</title></head> 
    <body> 
    <?php 
     include("connection.php"); //simple connection setting 
     $result = mysql_query("SET NAMES utf8"); //the main trick 
     $cmd = "select * from hindi"; 
     $result = mysql_query($cmd); 
     while ($myrow = mysql_fetch_row($result)) 
     { 
      echo ($myrow[0]); 
     } 
    ?> 
    </body> 
</html> 

덤프 누군가를하는 데 도움이

CREATE TABLE `hindi` (
    `data` varchar(1000) character set utf8 collate utf8_bin default NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

INSERT INTO `hindi` VALUES ('सूर्योदय'); 

지금 내 질문은, 어떻게 "META"을 지정하지 않고 일을하거나 정보를 헤더 않았다입니다 희망?

감사합니다.

답변

33

HTML 머리 부분에 올바른 문자 세트를 설정 했습니까?

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 

또는 사용하여 PHP 스크립트의 내용 유형을 설정할 수 있습니다 -

header('Content-Type: text/html; charset=utf-8'); 

일부 토론에 유래에 이미 여기에있다 -을 살펴

How to make MySQL handle UTF-8 properly setting utf8 with mysql through php

를하시기 바랍니다 PHP/MySQL with encoding problems

그래서 내가 알고 싶어 내가 직접 내 데이터베이스에 सूर्योदय를 저장하고 PHP를 사용하여 내 웹 페이지에 표시를 가져 수있는 방법입니다.

"데이터베이스에 직접 저장 하시겠습니까?"무슨 뜻인지 확실치 않습니다. PhpMyAdmin 또는 다른 유사한 도구를 사용하여 데이터를 입력하셨습니까? 그렇다면 PhpMyAdmin을 사용하여 유니 코드 데이터를 입력 해 보았으므로 phpMyAdmin을 사용하여 데이터를 입력하고 PHP 스크립트를 사용하여 확인할 수 있습니다. PHP 스크립트를 통해 데이터를 제출해야하는 경우 mysql 연결을 만들 때, 삽입 쿼리를 실행하기 전에 그리고 데이터를 선택할 때 NAMES 및 CHARACTER SET을 설정하면됩니다. 구문을 찾으려면 위의 게시물을보십시오. 희망이 도움이됩니다.

** UPDATE ** 그냥 고정 오타 등 PHP (> 5.3.5) PDO 문, 우리는 아래에 따라 캐릭터 세트를 설정할 수 있습니다 찾고있는 사람들을 위해

+0

또한 : http://stackoverflow.com/questions/1085093/strategy-for-supporting-unicode-multi-language-in-php5/ – deceze

+2

"이름 UTF8 설정"나를 위해 속임수를 썼는지! 감사합니다 –

+0

헤더를 설정하지 않고도 왜 작동 했습니까? –

21
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 


<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_query('SET character_set_results=utf8'); 
mysql_query('SET names=utf8'); 
mysql_query('SET character_set_client=utf8'); 
mysql_query('SET character_set_connection=utf8'); 
mysql_query('SET character_set_results=utf8'); 
mysql_query('SET collation_connection=utf8_general_ci'); 

mysql_select_db('onlinetest',$con); 

$nith = "CREATE TABLE IF NOT EXISTS `TAMIL` (
    `data` varchar(1000) character set utf8 collate utf8_bin default NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1"; 

if (!mysql_query($nith,$con)) 
{ 
    die('Error: ' . mysql_error()); 
} 

$nithi = "INSERT INTO `TAMIL` VALUES ('இந்தியா நாட்டின் பக்கங்கள்')"; 

if (!mysql_query($nithi,$con)) 
{ 
    die('Error: ' . mysql_error()); 
} 

$result = mysql_query("SET NAMES utf8");//the main trick 
$cmd = "select * from TAMIL"; 
$result = mysql_query($cmd); 
while($myrow = mysql_fetch_row($result)) 
{ 
    echo ($myrow[0]); 
} 
?> 
</body> 
</html> 
+0

코드를 보내 주셔서 감사합니다. 나는 이미 그것을 가지고있었습니다. –

+1

정확히 내가 무엇을 찾고 있었습니까. 코드를 보내 주셔서 감사합니다! mysql_query ('SET character_set_results = utf8');는 유니 코드 문자를 표시하기에 충분하다고 생각하십니까? – mccbala

+0

mysql 콘솔에서 kannada 글꼴을 표시하는 방법 "INSERT INTO lang values ​​('ಕನ್ನ ಡ ಸತ್ಯ ಕನ್ನಡ தेತ್ಯ')"; –

3

:

$dbh = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); 
+0

최고! 드디어 내 문제가 해결되었습니다. –

1
CREATE DATABASE hindi_test 
CHARACTER SET utf8 
COLLATE utf8_unicode_ci; 
USE hindi_test; 
CREATE TABLE `hindi` (`data` varchar(200) COLLATE utf8_unicode_ci NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
INSERT INTO `hindi` (`data`) VALUES('कंप्यूटर'); 
관련 문제