首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将俄语文本插入mysql数据库

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

Stack Overflow用户
提问于 2010-12-10 09:10:59
回答 5查看 22.1K关注 0票数 6

当我尝试将俄语文本插入到MySQL数据库中时,它会插入如下内容:г?

Рісѓрїр°ріс<рїр°с<рір°рї

因此,我有两个页面: registration.php和addUser.php。他们中的每一个

代码语言:javascript
复制
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

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

当我在phpMyAdmin中直接写入数据库,然后将这些数据显示在网页上时。用英语和俄语--都没问题。

但当我在registration.php上填满了个人数据的表单,然后转到addUser.php -所有的俄罗斯字符都像我写的那样显示在页面上和数据库中。

代码语言:javascript
复制
    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中也有这样的信息:

代码语言:javascript
复制
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数据目录\usr\local\mysql-5.1\data\

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-10 09:14:29

连接到数据库后尝试调用mysql_set_charset('utf8');。我认为这类似于执行集合名称查询,但由于PHP手册上说推荐使用该函数而不是集合名称查询,所以我会尝试一下。

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

票数 7
EN

Stack Overflow用户

发布于 2011-10-15 20:44:05

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

代码语言:javascript
复制
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界面中更改字符集它。也许这对你有帮助。

票数 4
EN

Stack Overflow用户

发布于 2010-12-10 09:24:17

检查您的MySQL配置,并确保您的编码定义正确。将这些行添加到您的安装使用的my.cnfmy.ini中。下面这些设置帮我完成了这个任务:

代码语言:javascript
复制
[client]
default-character-set=utf8
代码语言:javascript
复制
[mysql]
default-character-set=utf8
代码语言:javascript
复制
[mysqld]
character-set-server=utf8
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4404768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档