msyql中文乱码问题

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析 本文详细解析了在联发科(MTK)NeuroPilot平台上高效部署Qwen2.5大模型的全流程。内容涵盖从环境搭建、模型转换、量化优化到编译部署与上机推理的完整步骤,重点分享了模型转换与模型运行的关键实践与避坑指南,旨在帮助开发者将大语言模型成功集成至移动及边缘设备。 阅读详情

参考:http://hi.baidu.com/ayongs/item/30f784122c8d51a5ffded509

http://www.2cto.com/database/201108/101151.html

http://www.laruence.com/2008/01/05/12.html

mysql5.1参考手册

一.mysql字符集

MySQL 4.1及以上版本的字符集支持(Character Set Support)有两个方面:字符集(Character Set)和校对规则(Collation)。 字符集和校对规则有4个级别的默认设置:服务器(server),数据库(database),数据表(table)和连接(connection)。

  MySQL 中是根据下面几个变量确定服务器端和客户端用的什么字符集:

  character_set_client     客户端字符集

  character_set_connection   客户端与服务器端连接采用的字符集

  character_set_results     SELECT查询返回数据的字符集

  character_set_database    数据库采用的字符集

在服务器级别,确定方法很简单。当启动 mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。如:mysqld --default-character-set=utf8 ,如果启动mysql时没有指定 --default-character-set选项,那么默认的服务器级字符集为编译mysql时指定的字符集,由configure时的:--with-charset和--with-collation选项确实,默认的字符集为latin1.


每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:

CREATE DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]
如 create database ulogd default character set utf8;

如果创建数据库时没用指定字符集,那么该数据库默认的字符集为当前服务器所使用的字符集。


每一个表有一个表字符集和一个校对规则,它不能为空。为指定表字符集和校对规则,CREATE TABLE 和ALTER TABLE语句有一个可选的子句:

CREATE TABLE tbl_name (column_list)
    [DEFAULT CHARACTER SET charset_name [COLLATE collation_name]]
如果创建表时没有指定表的字符集,那么该表字符集为当前数据库所使用的字符集。


每一个“字符”列(即,CHAR、VARCHAR或TEXT类型的列)有一个列字符集和一个列 校对规则,它不能为空。列定义语法有一个可选子句来指定列字符集和校对规则:

col_name {CHAR | VARCHAR | TEXT} (col_length)
    [CHARACTER SET charset_name [COLLATE collation_name]]
如果没有指定列的字符集,那么该列的字符集为当前表的字符集


示例1:表和列定义

CREATE TABLE t1
(
    c1 CHAR(10) CHARACTER SET latin1 COLLATE latin1_german1_ci
) DEFAULT CHARACTER SET latin2 COLLATE latin2_bin;

在这里我们有一个列使用latin1字符集和latin1_german1_ci校对规则。是显式的定义,因此简单明了。需要注意的是,在一个latin2表中存储一个latin1列不会存在问题。

示例2:表和列定义

CREATE TABLE t1
(
    c1 CHAR(10) CHARACTER SET latin1
) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;

这次我们有一个列使用latin1字符集和一个默认校对规则。尽管它显得自然,默认校对规则却不是表级。相反,因为latin1的默认校对规则总是latin1_swedish_ci,列c1有一个校对规则latin1_swedish_ci(而不是latin1_danish_ci)。

示例3:表和列定义

CREATE TABLE t1
(
    c1 CHAR(10)
) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;

我们有一个列使用一个默认字符集和一个默认校对规则。在这种情况下,MySQL查找表级别来确定列字符集和 校对规则。因此,列c1的字符集是latin1,它的 校对规则是latin1_danish_ci。

示例4:数据库、表和列定义

CREATE DATABASE d1
    DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_ci;
USE d1;
CREATE TABLE t1
(
    c1 CHAR(10)
);

我们创建了一个没有指定字符集和校对规则的列。我们也没有指定表级字符集和校对规则。在这种情况下,MySQL查找数据库级的相关设置。(数据库的设置变为表的设置,其后变为列的设置。)因此,列c1的字符集为是latin2,它的 校对规则是latin2_czech_ci。


连接字符集和校对

考虑什么是一个“连接”:它是连接服务器时所作的事情。客户端发送SQL语句,例如查询,通过连接发送到服务器。服务器通过连接发送响应给客户端,例如结果集。对于客户端连接,这样会导致一些关于连接的字符集和 校对规则的问题,这些问题均能够通过系统变量来解决:

· 当查询离开客户端后,在查询中使用哪种字符集?

服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。

· 服务器接收到查询后应该转换为哪种字符集?

转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection(除非字符串文字具有象_latin1或_utf8的引介词)。collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,因为列具有更高的 校对规则优先级。

· 服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集?

character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。

总结如下:

请求阶段:

         1. 程序所使用的字符集转换为客户端字符集(character_set_client在连接数据库字符串中指定)。

         2.客户端字符集(character_set_client)转换为character_set_connection字符集

         3.然后服务器会检测存储区域(table,column)的字符集,然后把数据从连接字符集(character_set_connection)转为存储区域(table,column)的字符集,然后再存储或者查询。

返回阶段:

         1.服务器将存储区域(table,column)的字符集转换为character_set_results字符集返回。

         2.character_set_results字符集转换为程序所使用的字符集。

这里的程序可为自己写的应用程序,也可为mysql图形界面的访问工具或者终端。如果这些访问工具的字符集没有设置好,那么也会出现乱码。

根据以上原理,在上术字符集的转换过程中,如果任何一个转换字符集不兼容,那么就有可能出现乱码。

  二.实战篇

查看各级别字符集当前默认的字符集,命令如下: (在登录msyql系统后,在选择某个数据库之前执行)

1. status

2. show variables like 'char%'



查看某个数据库,某个表,某一个字符列当前使用的字符集,命令如下:

1. status  (选择某个数据库之后再执行)

2. show variables like 'char%'  (选择某个数据库之后再执行)

3. show create database database_name 

4. show create table table_name

5 show full columns from table_name

如果根据这些查看,每个阶段的转换字符集都兼容,但还是出现了乱码,那么请确定,你是否在插入数据之后再更改了数据库的字符集设置。

修改字符集的设置:

第一种:在/etc/my.cnf 文件中

[client] 下加入

#默认字符集为utf8
default-character-set = utf8

[mysqld] 下加入

# 默认字符集为utf8
default-character-set = utf8

第二种:在登录msyql后修改

 mysql> SET character_set_client = utf8 ;
     mysql> SET character_set_connection = utf8 ;
     mysql> SET character_set_database = utf8 ;
     mysql> SET character_set_results = utf8 ;
     mysql> SET character_set_server = utf8 ;
     mysql> SET collation_connection = utf8 ;
     mysql> SET collation_database = utf8 ;
     mysql> SET collation_server = utf8 ;

一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:

SET NAMES 'utf8';

它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

重要的有二两点: 
  1) 正确的设定数据库编码.MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集) 
  2) 正确的设定数据库connection编码.设置好数据库的编码后,在连接数据库时候,应该在连接字符串中指定客户端的编码,比如使用jdbc连接时,指定连接为utf8方式.

对于用C语言连接mysql如果没有在连接字符串中指定编码,那中文很有可能会出现乱码!!

C语言用 mysql_options 或者mysql_set_character_set指定字符集


另附常用的mysql命令:http://www.cppblog.com/zzg/archive/2009/05/29/86066.html

mysql -u ulogd -pulogd  #登录数据库,用户名为ulogd,密码为ulogd
show databases;   #查看有哪些数据库
use ulogd;        #选择一个数据库ulogd
show tables;      #查看当前数据库的数据表
describe ulog2;  #查看数据表ulog2的结构
quit;   #退出数据库

查看存储过程(用root用户执行)
show procedure status;
select `name` from mysql.proc where db = 'ulogd' and (type =  'function' or type = 'procedure');
注意,这里的name左右的是反引号,而不是单引号


查看存储过程或函数的创建代码
show create procedure proc_name;
show create function func_name;
创建数据库
echo "create database ulogd character set utf8;" | mysql -u root -proot

导入脚本
/usr/local/mysql/bin/mysql -u root -proot -D ulogd < ./doc/mysql-ulogd2.sql
添加一个用户,并设置权限
echo "grant create, insert, select, delete, update on ulogd.* to ulogd@localhost identified by 'ulogd'" | /usr/local/mysql/bin/mysql -u root -proot

查看当前状态:status

别再只调电压了!深入理解数控电源的CC/CV模式与双闭环PID控制(以BUCK电路为例) 本文深入解析数控电源的CC/CV模式与双闭环PID控制技术,以BUCK电路为例,探讨如何通过双闭环控制优化负载突变响应和模式切换稳定性。文章详细介绍了电压环与电流环的协同工作原理、PID参数整定技巧及工程实践中的非线性补偿方法,帮助工程师提升电源设计的智能控制能力。 阅读详情

相关推荐

STM32的DMA模块及Protues仿真实验

(一)DMA简介      DMA(Direct Memory Access,直接存储器访问), 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可 供其它操作使用。      STM32F407共有两个 DMA 控制器,总共有 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理 一个或多

weixin_45930204的博客 2850

mysql如何更改character-set-server默认为latin1

[client] default-character-set = utf8mb4 [mysql] character-set-server = utf8mb4 http://blog.youkuaiyun.com/whd526/article/details/54894559

silyvin 895

告别虚拟机!用ZYNQ7000和PYNQ 2.6.0打造一个能实时识别人脸的“智能摄像头”

本文详细介绍了如何利用Xilinx ZYNQ7000开发板和PYNQ 2.6.0框架构建实时人脸识别系统。通过硬件加速和嵌入式开发技术,该系统实现了低延迟、低功耗的独立运行能力,适用于边缘计算和物联网应用。文章包含从环境搭建到核心功能实现的完整指南,并提供了性能优化和问题排查的实用技巧。

weixin_42543046的博客 391

如何在控制台操作MYSQL表格使用中文时不能对齐及乱码问题

解决步骤: 环境: mysql安装向导中默认字符集设置为utf8,但是在进入mysql后命令行输出中文乱码 解决中文乱码: 进入mysql后在命令行输入:set names gbk; 解决不能对齐: 在登录mysql时输入以下命令: mysql --default-character-set=latin1 -uroot -p        &...

Baitian4387的博客 1666

YOLOv5实战:无人机巡检图片差异对比与违建标记(附完整代码)

本文详细介绍了如何利用YOLOv5目标检测技术实现无人机巡检图片差异对比与违建标记。通过图像对齐、目标检测、差异分析和可视化标记四个步骤,构建高效的违建识别系统,显著提升城市管理效率。文章包含完整代码实现和性能优化技巧,为计算机视觉在无人机巡检中的应用提供实用指南。

weixin_42535720的博客 282

我花3年踩坑总结的C#上位机开发指南:从零基础到项目落地(附实战案例)

串口乱码:编码格式不匹配,一定要和设备端确认;PLC连接超时:检查IP地址和端口,确保上位机和PLC在同一网段;界面卡死:耗时操作没开线程,WinForm用BackgroundWorker,WPF用Task;数据解析错误:寄存器地址算错(Modbus地址从0还是1开始);Modbus数据丢包:加CRC校验,重要数据重发机制;WPF绑定不生效:忘记实现INotifyPropertyChanged;项目打包失败:缺少依赖DLL,用Dependency Walker检查;现场环境不兼容。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1843

linux mysql mysqld 下增加default-character-set=utf8 启动报错

版本不一样,你在mysqld下面把 default-character-set=utf-8 改成: character_set_server=utf8

清水茶叶 531

从流体力学到深度学习:手把手教你用PINN预测涡流场(基于TensorFlow2.10+GPU)

本文详细介绍了如何利用物理信息神经网络(PINN)结合TensorFlow 2.10和GPU加速,预测Navier-Stokes方程的涡流场。通过核心原理讲解、实战环境配置、网络架构设计及物理约束实现,帮助读者掌握从流体力学到深度学习的跨学科技术应用,特别适合处理复杂流体问题和非定常流动场景。

weixin_29048309的博客 212

问题解决:MySQL因为默认字符集为 latin1 导致中文乱码

问题描述: 安装MySQL5.5.40版本后,默认字符集为latin1,输入中文乱码,直接修改my.ini文件中[mysql] default-character-set 和 [mysqld] character-set-server,导致MySQL服务无法启动 解决方案: 使用MySQL 5.5.40自带设置引导 MySQL\MySQL Server 5.5\bin\MySQLInstanceConfig.exe,修改默认字符集为utf-8后成功解决问题 问题残留: 为什么直接修改 my.ini 会导致服

qq_19987149的博客 1391

【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版)

2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 769

JAVA:Spring Boot 集成 Forest 优雅的 HTTP 客户端

Forest是一个优雅的Java HTTP客户端框架,通过注解式声明简化HTTP接口调用。它支持多HTTP客户端、自动参数绑定、序列化、重试机制和拦截器等功能。本文演示了如何在Spring Boot中集成Forest,包括配置、接口定义和调用示例,还展示了POST请求、文件上传等常见场景。相比传统HTTP客户端,Forest具有声明简洁、功能完善的特点,特别适合微服务调用和第三方API对接,能显著提升开发效率和代码可维护性。

木头 427

my.ini备份

Q: 在本地计算机 无法启动MySQL服务 错误1067:进程意外中止A: 5.0以上版本,my.ini放在安装目录下即要;以下版本放在windows目录下。以下是5.0.16版本的备份:# MySQL Server Instance Configuration File# --------------------------------------------------------------...

bibiye 498

爬虫进阶必备:深入理解requests.Session(),提升爬虫效率与稳定性

前两天,有个朋友跟我吐槽,说自己写了个爬虫爬取某个电商网站的商品信息,刚开始跑得好好的,爬了大概几百页之后,突然就开始报错了。HTTP状态码一会儿429,一会儿403,最离谱的是有些页面明明登录了却显示未登录状态。他排查了半天也没找到原因,最后把代码发给我看。 我扫了一眼代码,发现一个典型问题:他每次请求都新建一个requests.Session(),甚至有些请求直接用了requests.get()。这就好比每次进超市都要重新注册会员,每次都重新跟服务器“握手”,不翻车才怪。 其实,这就是我们今天要聊的

2201_76125261的博客 1228

解决msyql的中文乱码问题

网上的方法:插入以下两行代码到mysql配置文件中:[mysqld] character-set-server=utf8[client] default-character-set=utf8然而本人试了之后没有什么用。所以退而求其次,选择了另一种方法:在创建数据库的时候将数据库设置为uft8:create database db  character  set 'utf8';这样的话连同数据库里的...

lindanpeng的博客 315

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

wamp mysql中文_解决wampServer 中MySQL插入中文乱码问题

2015-10-15 07:04:45大家在使用wampserver中的mysql数据库时,插入中文会显示“??”,很多小伙伴都不知道给如何做,明明在创建数据库和表时已经设置字符为UTF-8了,可插入结果还是乱码。下面我来告诉大家一下原因。原因在于wampserver的配置问题,需要我们手动修改一下它的配置。首先启动wampserver,用鼠标指向MySQL,在它的栏目里会发现有一项为my.ini...

weixin_36124208的博客 1003

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python mysql中文乱码问题

用python 把中文存到mysql数据中的时候发现库中的中文成了乱码。猜想可是中文编码的问题。 mysql用提utf-8.而我也把字段转成了utf-8了,发现还是不行,测试代码如下: #!/usr/bin/env python #coding=utf-8 import os import MySQLdb conn = MySQLdb.connect(host='IP',

qq_34742182的博客 818

mysql解决中文乱码问题

下载了一个项目源码,在自己电脑eclipse中导入了,并且跑起来了,测试下功能发现插入中文数据会显示乱码问题。 使用eclipse的debug模式调试发现页面传递的数据确实是中文,但是插入到数据库变成了乱码。解决方法如下: mysql&amp;amp;gt; use db_jxc; Database changed mysql&amp;amp;gt; show create database db_jxc -&amp;amp;gt; ;...

huangbaokang的博客 1076

msyql乱码

2007-05-26 12:39mysql乱码处理总结:      (1)java中处理中文字符正常,在cmd client中显示乱码是字符集的问题.      (2)字段长度设置够长,但插入中文字符时提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column错误是字符集的问题.      (3)乱

evanerv0079的专栏 862

MySQL中文乱码解决方案集锦

整理一些MySQL中文乱码解决方案,比较实用。在使用MySQL时,插入中文字符,经常会出现乱码,中文全被用?代替。出现这种情况的原因,多是字符集不匹配造成的。在MySQL中,如果使用缺省的字符集,在建库、建表时,默认使用的是latin1字符集,为ISO 8859-1西欧字符集。插入中文字符时,与之不匹配,就会出现乱码。 本人使用的是MySQL 5.0版,并用C#操作MYSQL数

twosecond 1905

mysql插入中文乱码问题

新人第一篇博客,今天碰到的问题网上找了些个人一点点总结,不对的地方还望各位大佬斧正。 言归正传,今天把写好的项目打成war包,放到服务器上;通过前端界面修改字段,发现修改之后中文查出来乱码了; 我的项目是springboot springMVC mybatis结构,工具idea,mysql5.7;因为之前设置过idea的全局编码、项目编码、文件编码,日志打印出来前台发送过来也是没有乱码的,于是...

weixin_39006957的博客 234

mysql命令行查询中文乱码问题

mysql命令行查询中文乱码问题

张三先生 2135

MySQL5.6中文乱码问题

安装完MySQL后发现插入中文后发现出现了一堆乱码,哭了。。。。 费了老半天劲才改好 解决方法: 1、找到MySQL的安装目录,如果有my.ini直接在my.ini里面修改,如果没有只有my-default.ini的话,重点来了,坑惨我了,先复制my-default.ini重命名为my.ini,然后将其复制到lib文件下 2、在my.ini中添加 [client] #设置客户端字符集 ...

又考试的laymmy的博客 832

mysql数字乱码怎么解决方案_MySQL中文乱码解决方案集锦

整理一些MySQL中文乱码解决方案,比较实用。在使用MySQL时,插入中文字符,经常会出现乱码,中文全被用?代替。出现这种情况的原因,多是字符集不匹配造成的。在MySQL中,如果使用缺省的字符集,在建库、建表时,默认使用的是latin1字符集,为ISO 8859-1西欧字符集。插入中文字符时,与之不匹配,就会出现乱码。本人使用的是MySQL 5.0版,并用C#操作MYSQL数据库,当插入中文字符时...

weixin_33282146的博客 299

解决WampServer 中MySQL插入中文乱码问题

大家在使用wampserver中的mysql数据库时,插入中文会显示“??”,很多小伙伴都不知道给如何做,明明在创建数据库和表时已经设置字符为UTF-8了,可插入结果还是乱码。下面我来告诉大家一下原因。 原因在于wampserver的配置问题,需要我们手动修改一下它的配置。 首先启动wampserver,用鼠标指向MySQL,在它的栏目里会发现有一项为my.ini,点击打开它。在[cl

烟花易冷 1788

java向mysql数据库中插入中文乱码问题解决

1.首先统一页面和数据库的编码(以utf-8)为例 在建立数据库时 create database if not exists test default character set utf8; 在建数据库和数据表时使用default charset=utf8 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREME

uxiaolang的专栏 4207

msyql 中文乱码的解决及安装需要注意的(一)

如果查询的时候出现乱码,那么我们可以在mysql的安装文件里面找到一个名为my.ini的文件,打开后把字符编码设置为gbk,注意有两处。 default-character-set=gbk 遇到的有些问题是安装后不能正确显示中文,安装的时候选择数据库的编码为:GBK 。否则程序在读取的时候会产生乱码。这样可以显示中文。。。。。。 ====================

afdnlw的专栏 352

mysql解决传入中文乱码转换_Mysql中文乱码问题完美解决方案[转]

MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如php)的连线语系设定问题强烈建议使用utf8!!!!utf8可以兼容世界上所有字符!!!!一、避免创建数据库及表出现中文乱码和查看编码方法1、创建数据库的时候:CREATE DATABASE `test`...

weixin_32420193的博客 663
上一篇: ubuntu启动时图形界面与文本界面的转换
下一篇: ulogd2.0的安装
seamus
博客等级 码龄17年 132粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值