Китайские символы в имени файла проблема при чтении - PullRequest
0 голосов
/ 07 мая 2020

Я использую apache CXF для демонстрации веб-сервиса. При чтении имени файла на китайском языке из восходящего потока (SOAP пользовательский интерфейс на локальном языке) невозможно прочитать точные китайские символы. Это дает имя файла как '° U' ° U123.pdf. Я пробовал со всеми кодировками, но не повезло. Для других англоязычных sh именных вложений проблем нет, их можно правильно читать.

Из soap ui я отправляю кодировку UTF-8, а при чтении java я использовал то же самое. byte [] b = имя_приложения.getBytes (StandardCharsets.UTF_8); Строка attachName = новая строка (b, StandardCharsets.UTF_8.name ());

`Ниже мой код перехватчика.

public void handleMessage(SoapMessage message) throws Fault {
            logger.info("Handle Message for attachments ");
            BindingOperationInfo bop = message.getExchange().getBindingOperationInfo();   
            if (bop == null) {
                return;
            }
            logger.info("binding info "+bop.getBinding());

            if (bop.isUnwrapped()) {
                bop = bop.getWrappedOperation();

            }
            if (null == message.getAttachments() || message.getAttachments().isEmpty() ){
                return;
            }
            Iterator<Attachment> iter = message.getAttachments().iterator();
            Collection<Attachment> attchments = message.getAttachments();

            logger.info("message get attachments size   : "+attchments.size());
             int attachmentCount=0;
             Map<String, DataHandler> attachmentMap=   AttachmentUtil.getDHMap(attchments);
             logger.info("Map<String, DataHandler> "+attachmentMap.size());
            try{
                while (iter.hasNext()){
                    Attachment attachment = iter.next();
                    attachmentCount++;
                    }
                    }
                    }
...