繁体   English   中英

无法将俄文本插入mysql数据库

[英]can't insert russian text into mysql database

当我试图将俄语文本插入MySQL数据库时,它将其插入如下:г???????????? ?? ????????
Рісѓрїр°ріс<рїр°с<рір°рї

所以,我有两个页面:registration.php和addUser.php。 在他们每个人

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

数据库由11个表组成,每个表都有排序规则:utf8_general_ci,类型:MyISAM。 每个表中的每个字段都有Collat​​ion:utf8_general_ci。

当我直接在phpMyAdmin中写入数据库然后将此数据显示到网页时。 用英语和俄语 - 一切都好。

但是当我在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 \\

尝试调用mysql_set_charset('utf8'); 连接到数据库后。 我认为它类似于执行SET NAMES查询,但由于PHP手册说建议在SET NAMES查询中使用该函数,我会尝试一下。

此外,当您显示内容时,您可以尝试echo htmlentities($string, ENT_COMPAT, 'UTF-8');

我将希腊语存储在像这样创建的表中:

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界面中更改它的charset 也许这有帮助。

检查MySQL配置并确保正确定义了编码。 将这些行添加到my.cnfmy.ini中 ,这是您的安装所使用的。 这些设置对我有用:

[client]
default-character-set=utf8


[mysql]
default-character-set=utf8


[mysqld]
character-set-server=utf8

我已经在phpMyAdmin中尝试了多个排序规则以及更改了页面的字符集,这没有任何意义,但我愿意在经过两天的研究后尝试任何方法。 这个命令对我有帮助:mysql_set_charset('utf8');

列上的排序规则设置为koi8r_general_ci

编辑structure字段以设置排序utf16_general_ci
之后插入您的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM