我们完成了一些代码,仅当文件包含特殊字符时,该代码才起作用。但是,我们还需要更改编码格式ANSI,同时也不要包含特殊字符。例如:如果文件包含hello€,则它将生成ANSI编码。如果文件包含Hello,则它将生成UTF-8格式。请进一步建议。
package com.damco.b2b;
import oracle.tip.b2b.callout.Callout;
import oracle.tip.b2b.callout.CalloutContext;
import oracle.tip.b2b.callout.CalloutMessage;
import oracle.tip.b2b.callout.exception.CalloutDomainException;
import oracle.tip.b2b.callout.exception.CalloutSystemException;
import java.util.List;
public class UTFToANSI implements Callout {
@Override
public void execute(CalloutContext calloutContext, List input, List output) throws Exception, CalloutDomainException, CalloutSystemException {
System.out.println("com.damco.b2b.UTFToANSI starts ***********");
try{
CalloutMessage cmIn = (CalloutMessage) input.get(0);
String text = cmIn.getBodyAsString("UTF-8");
byte[] newStr = text.getBytes("ISO-8859-1");
System.out.println("com.damco.b2b.UTFToANSI ends ***********");
CalloutMessage cmOut = new CalloutMessage(newStr);
output.add(cmOut);
}catch(Exception e){
System.out.println("com.damco.b2b.UTFToANSI ex ***********\n"+e.getMessage());
throw new CalloutDomainException(e);
}
}
}
尝试像这样更改代码
String text = cmIn.getBodyAsString(StandardCharsetes."UTF-8");
byte[] newStr = text.getBytes(StandardCharsetes."ISO-8859-1");