zoukankan      html  css  js  c++  java
  • mysql 插入中文字段报错 "Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95...' for column 'title' at row 1"

    1. 查看一个 database 或一个 table 的编码
    show create database mytestdb;
    show create table testapp_article;

    mysql> show create table testapp_article;
    +-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    +-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | testapp_article | CREATE TABLE `testapp_article` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(100) NOT NULL,
    `content` longtext,
    `author` varchar(20) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    2. 创建 table 的时候就使用 utf8 编码
    在每次创建表的时候都在最后加上 character set = utf8 即可:
    如:
    create table test_table (
    id int auto_increment,
    title text,
    content text,
    posted_on datetime,
    primary key (id)
    ) character set = utf8;

    3. 修改已有 table 的编码
    使用默认编码创建的 table 是不能支持中文的,这时候使用如下语句对表testapp_article进行修改:

    mysql> alter table testapp_article convert to character set utf8;
    Query OK, 0 rows affected (0.18 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> show create table testapp_article;
    +-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    +-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | testapp_article | CREATE TABLE `testapp_article` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(100) NOT NULL,
    `content` longtext,
    `author` varchar(20) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 


    此后再往此 table 插入中文时,就可以正常存储和读取了,但之前插入的中文的乱码还是不能纠正,只是对新插入的数据没有问题。

    4. 修改mysql的配置文件,让 mysql 默认编码为utf8

    在/etc/mysql/mysql.conf.d/mysqld.cnf里面的[mysqld]下面添加如下行:
    [mysqld]
    character-set-server=utf8

    5 重启服务:

    sudo /etc/init.d/mysql restart

    如果没有错,再创建数据库或者表的时候默认编码应该就是 utf8 了。

    参照:https://blog.csdn.net/paullinjie/article/details/80312863 

  • 相关阅读:
    服务器时间不准导致 com.sun.facelets.impl.DefaultFacelet refresh
    推荐10款来自极客标签的超棒前端特效[第五期] java程序员
    IE10的市场占有率扩充了一倍 java程序员
    固定背景实现的背景滚动特效 java程序员
    支持触摸设备的响应式HTML5音频播放器 AudioPlayer.js java程序员
    WebRTC与Ace在线代码编辑器合作,实现实时协作编程 java程序员
    最流行的JavaScript库,jQuery不再支持IE旧版本 java程序员
    Jquery实现鼠标移上弹出提示框,移出消失 java程序员
    xxx.c: Error: C3065E: type of input file 'xxxx' unknown java程序员
    35+多用途WordPress主题 java程序员
  • 原文地址:https://www.cnblogs.com/lijavasy/p/10234563.html
Copyright © 2011-2022 走看看