在本地测试时候没有乱码, 但部署线上后在数据交互的时候乱码了
如图:
查看数据库
分析:
利用IDEA编写项目时,IDEA本身会将其转码为UTF-8,故本地写代码时不会乱码
查看本地MySQL数据库字符集, utf8没什么问题, 并且在本地数据交互的时候没有乱码
一旦部署到服务器运行环境上后进行数据交互的时候就出现中文乱码问题, 进而推测是阿里云中编码的问题
排查:
一、【MySQL数据库】
通过navicat连接阿里云中的MySQL后发现数据库本身的编码就是utf8
通过navicat查看一下数据库本身的编码 [更改之后的效果];
show variables like 'character%';
通过阿里云DMS查出的结果 [后来证实这样也没问题]
如果需要在Linux中更改CentOS7中使用mysql的字符编码可以参考下面这篇文章,写的比较详细
二、【linux默认的语言】
后来证实很有可能就是这里的问题:
原因
linux默认的语言一般是英文(EN),所以当使用中文目录或者中文命名文件的时候,可能会出现乱码的情况。
[ LANG=en_US; LANG=en_US.UTF.-8 都不行]
解决办法
(1)通过 locale 命令查看当前linux系统的语言,如果是 LANG=en_US,说明linux系统的默认语言是英文。然后进行下一步:
(2)输入:vi ~/.bash_profile,在其中添加如下内容:
[在这个地方我改了好几遍, 最终这个管用了]
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8
(3)在命令行执行如下命令:source ~/.bash_profile
locale命令查询的结果
(4)问题解决
如图:
---------------------------------------------------------------------------------------------------
但这里有个小插曲
再重启阿里云数据库的后网站瘫痪了,重新搭建的过程问题不断
在重新部署的时候有一些小的细节要注意
在使用守护进程的时候一定要先删掉nohup.out文件
顺序如下:
一、touch application.properties //新建文件
二、先删掉nohup.out文件
三、nohup java -jar -Dspring.config.location=./application.properties online_xdclass-0.0.1-SNAPSHOT.jar & //守护进程方式读取本地的配置文件
四、tail -f nohup.out
在这之前报了很多错误
譬如:
通过看全部启动日志
java -jar -Dspring.config.location=./application.properties online_xdclass-0.0.1-SNAPSHOT.jar
主要错误如下:
2020-07-01 13:25:56.826 WARN 23105---[main]ConfigServletWebServerApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“userController”的bean时出错:通过字段表示的未满足依赖项“userService”;嵌套异常为org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“userServiceImpl”的bean时出错:通过字段“userMapper”表示的不满足的依赖项;嵌套异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建URL中定义的名为“userMapper”的bean时出错[jar:文件:/usr/local/software/api/online_xdclass-0.0.1-快照.jar!/BOOT-INF/类!/net/xdclass/online xdclass/映射器/用户映射器.class]:通过bean属性“sqlSessionFactory”表示的不满足依赖关系;嵌套异常是org.springframework.beans.factory.Bean例外:创建在类路径resource[org/mybatis/spring/boot/autoconfigure/Myba中定义的名为“sqlSessionFactory”的bean时出错组织自动配置.class]:通过工厂方法实例化Bean失败;嵌套异常为org.springframework.beans.Bean实例异常:未能实例化[org.apache.ibatis网站.会话.SqlSessionFactory]:工厂方法“sqlSessionFactory”引发异常;嵌套异常
本地测试没问题,让人摸不清头脑
总之:我是这样弄好了,也许每个人语句的问题不一样