sql >> Databasteknik >  >> RDS >> Mysql

Kan inte infoga kinesiska tecken i MySQL

Använd UTF-8 när du skapar tabell.

create table table_name () CHARACTER SET = utf8;

Använd UTF-8 när du infogar i tabellen

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

Läs mer

Och mer

Detaljerad kod

Nedan kod är testad kod, gör följande.

Om du redan har skapat en databas, ÄNDRA den enligt nedanstående kod. Och om du inte skapade databasen, skapa den och ställ in Collation till utf8_unicode_ci

Och samma för tabell definierar Collation som "utf8_unicode_ci" för tabellfält där du vill lagra chines-tecken.

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>

Se resultatet och stegvisuellt enligt nedan.



  1. Logga alla frågor i mysql

  2. Gå runt JOIN-gränsen på 61 tabeller i MySQL genom att kapsla underfrågor inom varandra

  3. Använda Substr med Instr för att extrahera en sträng i Oracle

  4. Vad är det bästa sättet att hantera DBNull's