2010-12-10 74 views
5

: г???????????? ?? ????????
Рісѓрїр°ріс<рір°с<рір°рї不能插入俄語文本到MySQL數據庫

所以,我有兩個頁面:registration.php和addUser.php。在它們中的每

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

數據庫包括11個表,每個表具有歸類:utf8_general_ci,類型:MyISAM數據。每個表中的每個字段都有整理:utf8_general_ci。

當我在phpMyAdmin直接寫入到數據庫,然後顯示此數據網頁。用英語和俄語 - 一切OK。

但是,當我吃飽了我的形式與registration.php的個人數據,然後將addUser.php - 顯示所有俄語字符,比如我寫上 - 網頁和數據庫了。

function AddNewUser($Name, $Surname, $FatherName, $Email, $Password, $Phone, $DegreeID, $RankID, 
$Organization, $Department, $Country, $City, $Address, $Job) 
{ 
     //fetch data from database for dropdown lists 
     //connect to db or die) 
    $db = mysql_connect($GLOBALS["gl_kussdbName"], $GLOBALS["gl_kussUserName"], $GLOBALS["gl_kussPassword"]) or die ("Unable to connect"); 

    //to prevenr ????? symbols in unicode - utf-8 coding 
    mysql_query("SET NAMES 'UTF8'"); 

    //select database 
    mysql_select_db($GLOBALS["gl_kussDatabase"], $db); 
    $sql = "INSERT INTO UserDetails (
UserFirstName, 
UserLastName, 
UserFatherName, 
UserEmail, 
UserPassword, 
UserPhone, 
UserAcadDegreeID, 
UserAcadRankID, 
UserOrganization, 
UserDepartment, 
UserCountry, 
UserCity, 
UserAddress, 
UserPosition) 
VALUES(
'".$Name."', 
'".$Surname."', 
'".$FatherName."', 
'".$Email."', 
'".$Password."', 
'".$Phone."', 
'".$DegreeID."', 
'".$RankID."', 
'".$Organization."', 
'".$Department."', 
'".$Country."', 
'".$City."', 
'".$Address."', 
'".$Job."' 
);"; 
    //execute SQL-query 
    $result = mysql_query($sql, $db); 
    if (!$result) 
    { 
     die('Invalid query: ' . mysql_error()); 
    } 
    //close database = very inportant 
    mysql_close($db); 

} 
?> 

也是這樣的信息在phpMyAdmin:

auto increment increment 1 
auto increment offset 1 
autocommit ON 
automatic sp privileges ON 
back log 50 
basedir \usr\local\mysql-5.1\ 
big tables OFF 
binlog cache size 32,768 
binlog format STATEMENT 
bulk insert buffer size 8,388,608 
character set client utf8 
(Global value) cp1251 
character set connection utf8 
(Global value) cp1251 
character set database cp1251 
character set filesystem binary 
character set results utf8 
(Global value) cp1251 
character set server cp1251 
character set system utf8 
character sets dir \usr\local\mysql-5.1\share\charsets\ 
collation connection utf8_general_ci 
(Global value) cp1251_general_ci 
collation database cp1251_general_ci 
collation server cp1251_general_ci 
completion type 0 
concurrent insert 1 

所以我需要正確地顯示,保存,然後從數據庫俄文本。感謝名單! 連接超時10 datadir \ usr \ local \ mysql-5.1 \ data \

+2

http://developer.loftdigital.com/blog/php-utf-8-cheatsheet – BalusC 2010-12-10 02:17:32

+0

Thanx,BalusC !!你的回答是最好的幫助! – yozhik 2010-12-11 10:18:09

回答

5

嘗試在連接到數據庫後調用mysql_set_charset('utf8');。我認爲它與執行SET NAMES查詢類似,但是由於PHP手冊說建議使用SET NAMES查詢使用該函數,所以我會嘗試它。

此外,當你顯示你的內容,你可以嘗試echo htmlentities($string, ENT_COMPAT, 'UTF-8');

3

檢查你的MySQL配置,並確保您的編碼是正確定義。 這些行添加到的my.cnf的my.ini,它曾經安裝使用。 這些設置爲我做的伎倆:

[client] 
default-character-set=utf8 


[mysql] 
default-character-set=utf8 


[mysqld] 
character-set-server=utf8 
1

我已經在phpMyAdmin嘗試多個排序規則以及改變頁面的字符集,這沒有意義,但我願意在兩天的研究後嘗試任何事情。這個命令幫助了我:mysql_set_charset('utf8');在列

整理設置爲koi8r_general_ci

3

我店希臘像部份創建的表:

CREATE TABLE `test` (
    `test_id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `test_name` VARCHAR(30) NOT NULL, 
    PRIMARY KEY (`test_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; 

或者,如果表已經創建了我想你可以改變字符集它在phpMyAdmin的接口。也許這有幫助。

-1

編輯您的structure字段以設置整理utf16_general_ci
之後,插入您的數據。