SampleResult:无法转换字符串'XXXX',使用默认编码:UTF-8,java.io.UnsupportedEncodingException



当运行这些代码时,它会抛出错误:

public class getRondomNumber extends AbstractJavaSamplerClient {
private int index = 0;
private static Logger logger = Logger.getLogger(getRondomNumber.class);
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
// TODO Auto-generated method stub
Date date = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHhhss");
String tempTime = ft.format(date);
Random rd = new Random();
String tempNum = tempTime + String.valueOf(rd.nextInt(1000));
logger.debug("debug: " + tempNum);
//logger.error("error: " + tempNum);
logger.info("info: " + tempNum);
SampleResult results = new SampleResult();
results.setSamplerData(": "+ index);
if(index%2 == 0) {
results.setSuccessful(true);
}else {
results.setSuccessful(false);
}
logger.info("This is runned.");
results.setResponseData("Result: ", tempNum);
return null;
}
}

运行这些代码时,它会抛出如下错误: o.a.j.s.SampleResult:无法使用默认编码(UTF-8(使用"20180616121200666"转换字符串 java.io.UnsupportedEncodingException: 20180616121200666 at java.lang.StringCoding.encode(StringCoding.java:341( ~[?:1.8.0_121]

我的问题是如何解决此错误。

我不确定您这样做要达到什么目的:

new String(tempNum.getBytes(),StandardCharsets.UTF_8)

为什么不按原样使用tempNum

无论如何,正在发生的事情是,tempNum.getBytes()根据本地默认编码将tempNum作为一系列字节返回

。不管那是什么,它显然不是UTF-8。

不能期望一个字符串编码的输出生成的字节被正确用作另一个字符串编码的输入。

我去参考SampleResult setResponseData: void setResponseData(java.lang.String response, java.lang.String encoding(. 将我的代码更改为 results.setResponseData("结果:"+ tempNum, "UTF-8"(;.它有效。

最新更新