java 将从读取到的外部调用程序的带有日文字符的输出信息 输出到Jenkins 上的Console Output 上乱码。

现象分析:

Jenkins 上可以将日文正常显示出来,但是读取外部程序的输出信息的日文却不能正常显示。

Java Console 输出 Jenkins Console Output 输出调用程序的输出信息 Jenkins Consloe Oputput 输出非调用程序的输出信息
正常 不正常 正常

更改了自己机器和日本机器Eclipse里的各种encoding的设置,改成UTF-8也是没有任何用处。

原因解释

所以问题的关键还是在于读取外部程序输出信息的代码上。

从网上看了好多关于Java编码的问题,最后找到问题的根源在于InputStreamReader 的编码问题。

InputStreamReader是字节流通向字符流的桥梁,封裝了InputStream在里头, 它以较高级的方式,一次读取一个一个字符,以文本格式输入 / 输出,可以指定编码格式;

它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。 为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如: 
 BufferedReader
in = new BufferedReader(new InputStreamReader(System.in));

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取一个文本行,从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。BufferedReader的最大特点就是缓冲区的设置。通常Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求,如果没有缓冲,则每次调用
read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。

InputStreamReader最大的特点是可以指转换的定编码格式,这是其他类所不能的,从构造方法就可看出,一点在读取中文字符时非常有用。
知道了问题所在,就可以改代码了

代码

                    try {
BufferedReader br1 = new BufferedReader(new InputStreamReader(br,"UTF-8"));
String line1 = null;
while ((line1 = br1.readLine()) != null) {
if (line1 != null){
logger.info("info: "+line1);
}
}
} catch (IOException e) {
e.printStackTrace();
}

关于java 日文输出信息到 Jenkins Console Output 乱码问题的更多相关文章

  1. Send Excerpts from Jenkins Console Output as Email Contents

    Sometimes we need to send some excerpts from Jenkins console output (job logs) as email, such as tes ...

  2. retrieve jenkins console output

    @Api(value = "console", description = "Retrieve the Console Outputs",produces=Me ...

  3. java 自定义异常输出信息(使用构造器)

    throw new Exception("上传的脚本类型不匹配,当前只支持类unix系列的远程扫描,请上传后缀名为 .sh .pl 的脚本文件"); 这样就可以了,结合配置的异常信 ...

  4. 063、Java中输出信息

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  5. [Jenkins]Console Output中文显示问号的问题解决

    ------------------------------------------------------ 如需转载,请注明出处. 文章链接:https://www.cnblogs.com/dzbl ...

  6. Jenkins console输出乱码???

    jenkins console输出乱码??? 在jenkins中job执行shell,console中出现乱码如下: [WARNING] /home/mtime/data/jenkins/worksp ...

  7. 解决Jenkins console输出乱码

    背景 Jenkins console输出乱码,如 ������������� 1 解决办法 Jenkins Master 设置utf8 encoding Tomcat 启动脚本 export JAVA ...

  8. java,安卓之信息的输出

    Android中实现信息的输出 java一般的打印办法为System.out.println("");J2ME也是,在ide的控制台就可以看到效果. 但是android平台,Sys ...

  9. console 输出信息

    console.info 用于输出提示性信息 console.error用于输出错误信息 console.warn用于输出警示信息 console.debug用于输出调试信息 console.info ...

随机推荐

  1. OC-多线程安全隐患及一般解决办法

    1.多线程的安全隐患1.1>一块资源可能被多个线程共享,也就是多个线程可能会访问同一块资源,如多个线程访问同一个对象,变量,文件等当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题1. ...

  2. [置顶] oracle存储过程中单引号及字符串拼接处理

    在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义.单引号的使用是就近配对,即就近原则.而在单引号充当转义角色时相对不好理解 1.从第二个单引号开始被视为转义符,如果第二个单引号后 ...

  3. 基于visual Studio2013解决面试题之0908最大连续数字串

     题目

  4. 几种经典的数据排序及其Java实现

    选择排序 思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空. ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k ...

  5. WEB应用如何解决安全退出问题

    让我先来描述一下这个情况.一位用户第一次请求一个web页面,web应用弹出登录窗口提示用户登录,用户输入用户名,密码,验证码后服务器进行判断,正确后,返回用户请求的页面.     此时,用户有事需要离 ...

  6. css3 动画运动路径

    1.cubic-bezier贝塞尔曲线CSS3动画工具 http://www.xuanfengge.com/cubic-bezier-bezier-css3-animation-tools.html ...

  7. Mac下MAMP初试体验

    原创文章,转载请注明出处! 近期小学习了一下Mac下的Apache,Mysql,php.这里记录一下,以备忘 1 php 1.1 php返回值的測试 在MAMP下測试成功,直接echo返回所数据 1. ...

  8. 一个上传EXCEL导入示例

    REPORT ZTEST_UPEXCEL. data: gt_table type TABLE OF SFLIGHT, gs_table like line of gt_table. DATA:lt_ ...

  9. shell oracle

    #!/bin/sh traffic= rm -rf test.txt data=`sqlplus -S anoscfg/anoscfg <<EOF spool test.txt set f ...

  10. box-sizing:content-box

    box-sizing:content-box 规定两个并排的带边框的框: