SampleResult:无法转换字符串';XXXX',使用默认编码:UTF-8,java.io.UnsupportedEncodingException
运行这些代码时,会抛出错误:SampleResult:无法转换字符串';XXXX',使用默认编码:UTF-8,java.io.UnsupportedEncodingException,java,Java,运行这些代码时,会抛出错误: public class getRondomNumber extends AbstractJavaSamplerClient { private int index = 0; private static Logger logger = Logger.getLogger(getRondomNumber.class); @Override public SampleResult runTest(JavaSamplerContext ar
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:无法使用“20180616121200666”转换字符串,使用默认编码:UTF-8
java.io.UnsupportedEncodingException:20180616121200666
在java.lang.StringCoding.encode(StringCoding.java:341)~[?:1.8.0_121]
我的问题是如何解决此错误。我不确定您这样做的目的是什么:
new String(tempNum.getBytes(),StandardCharsets.UTF_8)
为什么不按原样使用tempNum
无论如何,发生的事情是,tempNum.getBytes()
根据本地默认编码返回一系列字节
不管那是什么,它显然不是UTF-8
您不能期望由一个字符串编码的输出生成的字节被正确地用作另一个字符串编码的输入。我要参考SampleResult setResponseData: void setResponseData(java.lang.String响应,java.lang.String编码)。
将我的代码更改为results.setResponseData(“结果:+tempNum,“UTF-8”);。它可以工作。实际上,我的普通代码如下所示:results.setResponseData(“Result:,tempNum);它抛出了上面的错误,所以我找到了解决它的方法。