无法在 MySQL 中插入汉字

IT技术 php javascript mysql character-encoding
2021-03-19 11:19:46

cookie 使用 big5 集编码,无法插入 MySQL。你能帮我解决这个问题吗?

字段:username是eng,date1是日期,reason1是汉字。

$reason1 = $_COOKIE["reason"];
$sql2="INSERT INTO 
    attendance_count(username,date,count_time,appendix) 
    VALUES ('$username','$date1','0','$reason1')";
mysql_query($sql2);
4个回答

创建表时使用UTF-8

create table table_name () CHARACTER SET = utf8;

插入表时使用UTF-8

set username utf8; INSERT INTO table_name (ABC,VAL);

阅读更多

和更多

详细代码

下面的代码是经过测试的代码,请执行以下操作。

如果您已经创建了数据库,请将其更改为以下代码。如果您没有创建数据库,则创建它并将排序规则设置为 utf8_unicode_ci

对于要在其中存储中文字符的表字段,表定义排序规则为“utf8_unicode_ci”。

ALTER DATABASE `stackoverflow` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE TABLE `stackoverflow`.`chines`
(
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `words` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE = InnoDB;
<?php

    define('HOSTNAME', 'localhost');
    define('USERNAME', 'root');
    define('PASSWORD', '');
    define('DATABASE', 'stackoverflow');

    $dbLink = mysql_connect(HOSTNAME, USERNAME, PASSWORD)or die(mysql_error());
    mysql_query("SET character_set_results=utf8", $dbLink)or die(mysql_error());
    mb_language('uni'); 
    mb_internal_encoding('UTF-8');
    mysql_select_db(DATABASE, $dbLink)or die(mysql_error());
    mysql_query("set names 'utf8'",$dbLink)or die(mysql_error());

    if(isset($_POST['addWord']))
    {
        mysql_query("SET character_set_client=utf8", $dbLink)or die(mysql_error());
        mysql_query("SET character_set_connection=utf8", $dbLink)or die(mysql_error());

        $sql_query = "INSERT INTO chines(words) VALUES('".$_POST['words']."')";
        mysql_query($sql_query, $dbLink)or die(mysql_error());
    }

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title></title>
</head>
<body>
    <?php
        mysql_query("SET character_set_results=utf8", $dbLink);
        $sql_query = "SELECT * FROM chines";
        $dbResult = mysql_query( $sql_query, $dbLink)or die(mysql_error());

    ?>

    <form action="" method="post">

        <p>Word : <input type="text" name="words" /></p>
        <p><input type="submit" name="addWord" /></p>

    </form>
    <?php
        while($row = mysql_fetch_assoc($dbResult))
        {
            echo $row['words']. '<br />';
        }
    ?>
</body>
</html>

查看结果和步骤视觉如下。

在此处输入图片说明

或者您可以通过更改 phpmyadmin 中的表字段并将类型设置为 UTF-8...example .. ALTER TABLE t MODIFY col1 CHAR(50) CHARACTER SET utf8;
2021-04-23 11:19:46
tanzilo.com/2008/10/13/...请按照此链接中的每一步进行操作,这将有助于同时为我编写代码。
2021-04-24 11:19:46
mysqli_query("SET character_set_results=utf8", $db);
2021-05-01 11:19:46
@DipeshParmar ,您好 Dipesh,它在 mysql 数据库中成功运行良好,我想使用 php 在 oracle 数据库中执行相同的概念。我需要做什么?请帮助我解决这个问题。我提出了问题,请查看此链接
2021-05-09 11:19:46
mysql_query("SET character_set_client=utf8", $dbLink); mysql_query("SET character_set_connection=utf8", $dbLink);
2021-05-17 11:19:46

对于中国人,你真的需要utf8mb4,而不是utf8这是因为少数需要 4 字节 UTF8 字符的中文字符,MySQLutf8不支持。

mysql 说(1115, "Unknown character set: 'utf8mb4'"),这里是 mysql-v5.1.71。
2021-05-03 11:19:46
一个朋友给我发了这个,在谷歌搜索了几个小时后救了我,谢谢
2021-05-07 11:19:46
然后你必须至少更新到 5.5。(5.5.3 是 utf8mb4 可用的时间——大约十年前)。
2021-05-20 11:19:46

真正的问题是关于 cookie 被编码big5客户端的其余数据是否编码为utf8如果两者都为“是”,...

将连接更改为big5,执行cookieINSERT/ SELECT,然后更改回 utf8(或者,升级后最好是 utf8mb4)。

为您正在使用的 API执行SET NAMES big5或调用charset('big5')函数是来回切换的首选方式。

(同时,离开mysql_*界面;切换到mysqli_*PDO。)

如果客户端中的一切都是big5,则无需来回切换。只需声明客户端正在使用 big5。注意:表/列是否也是big5都没有关系;MySQL 将在它们之间进行转换。

更新表列的字符集以及 utf8 和表字符集。可以检查Mysql workbench alter table并查看您要支持中文字符的列的字符集。