2022-05-15 03:00:14
我们知道服务器的定期备份文件设置是utf格式的,但是当我们下到本地开发环境导入的时候,却报了如下的错误:
一开始,我以为是导出的时候出现问题,看报错以为是主键出现冲突了,然后打开sql文件查看,看来看去啥问题都没有,所以断定不可能是数据库dump的时候产生的数据异常。那么会是什么原因呢?查看百度都是清一色的主键之类的设置不对,无语子。
然后尝试用workbench打开sql文件,用workbench来执行这个文件。当选择打开文件的时候跳出来一个弹窗,说当前不是utf8文件!我呆住了,难道我没有用utf8编码吗?打我使用notepad++(听说这软件作者有问题,emmm)打开查看,发现居然是gb2312文件!在workbench中设置用gb2312打开,居然真的运行成功了,导入也没有乱码。
实在是想不通,貌似是说使用本地编辑器打开就会自动将文件转码成本地的编码格式。所以如果不想转码的话,就不要用编辑器打开。或者,当编码改变后,再用工具将编码转为utf8,比如notepad++可以转换编码。当我把sql文件转为utf8编码后,再次在命令行执行导入指令,发现成功了!貌似,网上都没有说到过这种可能性吧,所以,我是第一人?哈哈。
之前的邮件系统,发送的邮件都是纯文本的,今天稍微更改了一下,变成了html样式的文本了。没有多难,就贴一个代码自行理解了。
package top.dreamcenter.dreamcenter.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
...
@Service
public class AsyncServiceImpl implements AsyncService {
private final FriendReviewDao friendReviewDao;
private final JavaMailSender sender;
private final MailProperties properties;
private final ServerProperties serverProperties;
@Autowired
public AsyncServiceImpl(FriendReviewDao friendReviewDao, JavaMailSender sender, MailProperties properties, ServerProperties serverProperties) { ... }
@Async("asyncThreadPoolTaskExecutor")
@Override
public void sendMail(FriendReview friendReview){
int targetId = friendReview.getTarget();
FriendReview target = friendReviewDao.getReviewById(targetId);
String mail = null;
if (targetId == 0) {
mail = properties.getUsername();
} else if (target.getTip() == 1){
mail = target.getEmail();
}
if (mail!=null) {
MimeMessageHelper helper = new MimeMessageHelper(sender.createMimeMessage());
try {
helper.setFrom(properties.getUsername());
helper.setTo(mail);
helper.setSubject("来自:" + friendReview.getNickname() + "的回复");
if (target == null) {
helper.setText("个人主页收到新的回复:" +
"\n内容:" + friendReview.getMsg() + ";" +
"\n来自:" + serverProperties.getMailVisit() + ";");
} else {
helper.setText(constructMailMsg(target.getMsg(), friendReview.getMsg(),
friendReview.getNickname(), serverProperties.getMailVisit()).toString(),true);
}
sender.send(helper.getMimeMessage());
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
public StringBuilder constructMailMsg(String msgFather,String msgSon,String from,String url) { ... }
}