在实践中,使用Jenkins发送测试报告,收到邮件,邮件内容中的中文为乱码,邮件发送的方式是在Jenkins发邮件设置中设置邮件内容为:${FILE,path="report_ug.html"} ,其中report_ug.html 就是报告内容的html

report_ug.html java生成方式:代码就是生成一个html字符串,把这个字符串保存为report_ug.html 文件

public class Test {

    public static void main(String[] args) {

        String content ="<html>\n" +
" <head>\n" +
" <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />\n" +
" </head>\n" +
"<body lang=ZH-CN>\n" +
" 还有乱码么a安抚?:.发送。; utf-8 is there any wrong code ? 18888899999\n" +
"</body>\n" +
"</html>";
FileOperation.write(ConfigUtil.getAutoCofigRootPath()+"report_ug.html",content,"GBK"); }
}

发送的邮件显示为乱码:

网上查找解决办法,但是由于Jenkins管理权限在其他部门,而且使用比较久,也不会随意变更一些什么设置,只有只有从代码上解决问题

首先,网上有的说html保存的时候要以GBK编码方式保存,但是不知道为什么,怎么保存GBK编码方式的html文件都不能解决问题。最后找到从代码上解决的办法,那就是把html文件中的所有中文,以Unicode编码16进制编码保存。

中文 Unicode编码16进制 编码查询地址为:http://www.mytju.com/classcode/tools/encode_gb2312.asp,如查找“还有乱码么”的ascii为:

这样,就需要把html中的每个中文找出来,并转换成Unicode编码16进制编码,在这个编码前面加个"&#x" ,后面加个";" ,如:“还”字的编码为“8FD8”,在html中保存为:"&#x8FD8;"

Java 代码需要处理的步骤为:

1、遍历字符串,如果是中文,就转换为16进制Unicode编码

2、遍历字符串,如果是中文标点,就转换为16进制Unicode编码

3、重新组装html

import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class Convert {
public static String stringToUnicode16(String s) {
// 先把字符串转换为ASCII码
//保存重新组装的html代码
StringBuffer temp = new StringBuffer();
// 把字符中转换为字符数组
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (isChinese(String.valueOf(chars[i])) || isChinesePunctuation(chars[i])) { temp.append("&#x" + Integer.toHexString((int) chars[i]) + ";"); } else {
temp.append(String.valueOf(chars[i]));
} } return temp.toString();
} public static boolean isChinese(String str) {
//判断是否是中文
String regEx = "[\u4e00-\u9fa5]";
Pattern pat = Pattern.compile(regEx);
Matcher matcher = pat.matcher(str);
boolean flg = false;
if (matcher.find())
flg = true;
return flg;
} // 根据UnicodeBlock方法判断中文标点符号
public static boolean isChinesePunctuation(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_FORMS
|| ub == Character.UnicodeBlock.VERTICAL_FORMS) {
return true;
} else {
return false;
}
}
}

这样,html中的中文就以16进制Unicode编码 保存。

调用方式为:

import com.paxunke.smart.utils.*;

public class Test {

    public static void main(String[] args) {

        String content = "<html>\n" +
" <head>\n" +
" <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />\n" +
" </head>\n" +
"<body lang=ZH-CN>\n" +
" 还有乱码么a安抚?:.发送。; utf-8 is there any wrong code ? 18888899999\n" +
"</body>\n" +
"</html>";
String temp = Convert.stringToUnicode16(content);
System.out.println(temp);
FileOperation.write(ConfigUtil.getAutoCofigRootPath() + "report_ug.html", temp, "GBK"); }
}

执行,打印的html文件内容为:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body lang=ZH-CN>
还有乱码么a安抚?:.发送。; utf-8 is there any wrong code ? 18888899999
</body>
</html>

再把这个文件在Jenkins中发送邮件,乱码问题解决

从代码上解决Jenkins 发送邮件中文乱码问题的更多相关文章

  1. 解决jenkins slave 中文乱码 encoding=ANSI_X3.4-1968

    jenkins配置slave进行构建时,发现slave构建的控制台输入中文乱码,查看master,slave的jenkins系统信息 file.encoding和sun.jnu.encoding都没有 ...

  2. 解决jenkins 发送邮件图片乱码问题

    1.在本地mac上测试邮件发送正常 发送邮件内容图片没有乱码 2.公司测试服务器是一台windows2008的系统jmeter + ant  jenkins 安装完成后 设置邮件发送格式模板,设置附件 ...

  3. 解决jenkins控制台中文乱码问题

    1,进入[系统管理]->[系统设置]->全局属性:KEY: LANG; VALUE:zh.CH.UTF-8 2,修改Jenkins.xml文件 在Jenkins安装目录下找到jenkins ...

  4. Jenkins发送邮件中文乱码问题解决

    在环境变量中添加: JAVA_TOOL_OPTIONS  =  -Dfile.encoding=UTF8 配置好后,重启Jenkins即可

  5. 完美解决Informix的中文乱码问题

    完美解决Informix的中文乱码问题  Informix是IBM旗下的一款数据库,要不是这个项目需要,估计这辈子我都不知道居然还有这么一款数据库.想来公司的项目遍布全国各地,各种部署环境各种应用场景 ...

  6. 教你解决Sublime Text中文乱码问题

    教你解决Sublime Text中文乱码问题[转载自成长的企鹅]       Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦. ...

  7. 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)

    前述:      在写这篇笔记之前,对笔记中的设计模式进行介绍:      本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式           (1)装饰(包装)设计模式口诀:         ...

  8. 尚硅谷面试第一季-09SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理呢

    目录结构: 关键代码: web.xml <filter> <filter-name>CharacterEncodingFilter</filter-name> &l ...

  9. zabbix解决监控图形中文乱码

    原文: https://blog.csdn.net/xujiamin0022016/article/details/86541783 zabbix 4解决监控图形中文乱码首先在windows里找到你想 ...

随机推荐

  1. 批量删除SQL数据库中的所有表【笔记】

    use OTRJiraDB GO ) begin SELECT @sql='drop table ' + name FROM sysobjects WHERE (type = 'U') ORDER B ...

  2. C# chart控件基础使用

    基本介绍:chart(图表) 功能:主要用来绘制折线图,柱状图与饼状图,也可达到动态效果(例如作示波器): 需要说明 一个chart可以包含多个chartArea. chartArea是具体的坐标区域 ...

  3. https 简介学习

    https://program-think.blogspot.com/2014/11/https-ssl-tls-1.html https://program-think.blogspot.com/2 ...

  4. Webwork【03】核心类 ServletDispatcher 的初始化

    1. Webwork 与 Xwork 搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,W ...

  5. linux下神奇的script

    script 是一个神奇命令,script 能够将终端的会话过程录制下来,然后使用 scriptreplay 就可以将其录制的结果播放给他人观看.script 的好处就在于你在终端中的所有操作.敲过的 ...

  6. 使用正态分布变换(Normal Distributions Transform)进行点云配准

    正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面是PCL官网上的一个例 ...

  7. MySQL表名大小写敏感导致的问题

      最近在项目中遇到一个比较奇怪的小问题.在开发过程中自己测试没有问题,但是提测后,测试的同时在测试一个功能时报错了,日志是: Caused by: com.mysql.jdbc.exceptions ...

  8. 监听textarea文本框文本输入情况

    // When the value of the text area changes... $("textarea").on("input", function ...

  9. 使用 ODP.NET 访问 Oracle(.net如何访问Oracle)详解

    1,什么是ODF .NE,?就是Oracle 为 .NET (ODP.NET) 专门编写了 Oracle Data Provider,一个用于 Microsoft .NET 环境下的 Oracle 数 ...

  10. Easyui + asp.net MVC 系列教程 第09-17 节 完成登录 高清录制

    前面八节 在这里 Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 在接下来的 几节里面 我们完成登录功能 打开页面 首先进入登录页面 只有登录成功了 才能进入管理 ...