Java通过apache调用发送错误的字符串?可能的编码错误



我几乎可以肯定这里没有人能帮我。但我很失望。这是我攻读学士学位的最后一项工作的一部分,我无法让它发挥作用。

我用Java编写了一段代码,该代码将字符串提交给服务器(由我所在大学的一个提供该服务的实验室维护(,服务器处理我的数据,并用我想要的新数据进行回复。

除了一件事,一切都很好有时我需要提交带有ISO-8859-1字符的字符串(如"é"或"ã"(,而这些字符会被发送到服务器

我的问题是,整个提交数据过程都是用WSDL/RMI完成的,我对它的工作原理一无所知。

我刚刚在Eclipse上执行了一个向导,它创建了一个具有我想要的方法(从服务器导入(的类。当我调用我想要的对象时,它会准备我的字符串,并通过apache调用对象将其发送到服务器。

我真的不知道该怎么做才能修复它。我试着用设置调用对象的编码

_call.setEncodingStyle("ISO-8859-1");

但没有成功。

这是执行调用的方法的代码。

public int runTask(java.lang.String userName, java.lang.String password, java.lang.String language, java.lang.String linguisticInfo, java.lang.String inText) throws java.rmi.RemoteException 
    {
        if (super.cachedEndpoint == null) {
            throw new org.apache.axis.NoEndPointException();
        }
        org.apache.axis.client.Call _call = createCall();
        _call.setOperation(_operations[1]);
        _call.setUseSOAPAction(true);
        _call.setSOAPActionURI("");
        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
        _call.setOperationName(new javax.xml.namespace.QName("http://fextwswrapper", "runTask"));
        setRequestHeaders(_call);
        setAttachments(_call);
 try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {userName, password, language, linguisticInfo, inText});
        if (_resp instanceof java.rmi.RemoteException) {
            throw (java.rmi.RemoteException)_resp;
        }
        else {
            extractAttachments(_call);
            try {
                return ((java.lang.Integer) _resp).intValue();
            } catch (java.lang.Exception _exception) {
                return ((java.lang.Integer) org.apache.axis.utils.JavaUtils.convert(_resp, int.class)).intValue();
            }
        }
  } catch (org.apache.axis.AxisFault axisFaultException) {
  throw axisFaultException;
}
    }

如果有人能向我解释发生了什么或解决问题,我将不胜感激。

非常感谢!

您需要对发送的数据使用UTF-8编码

默认情况下,ASCII将只读取一个字符的8位,而像您发送的那些特殊字符需要更多的内存,因此文本显示为?