Я преобразую MIME-сообщения в XML, чтобы я мог отправить их в службу слияния как запросы SOAP, но Emoji задает мне проблемы (например, , которые я бы хотел преобразовать в 😃
).Преобразование Java emoji в xml: какие библиотеки существуют?
Я использую XStream для обработки своих преобразований, но он неправильно кодирует emoji и другие пары высоких/низких суррогатов (см. Примерный пример ниже). Возможно, что у меня отсутствует какой-то важный компонент конфигурации xstream.
Я нашел this project, основанные на this project, который делает преобразование для отдельных поставщиков услуг японского мобильного телефона с помощью жестко закодированы отображений, но я чувствую, что эта проблема, вероятно, решена более элегантно в существующих Oracle или третьей сторона (Apache, и т. д.).
Из того, что я читал и слышал NuSOAP решает эту проблему для PHP, но я хотел бы остаться в мире Java/Groovy для преобразования emoji, чтобы я мог использовать совместимую библиотеку.
Какие инструменты/подходы вы используете для обработки преобразования emoji в XML на JVM?
import junit.framework.TestCase;
import com.thoughtworks.xstream.XStream;
public class XStreamTest extends TestCase {
public void testXStreamEmojiEncoding() {
final String expected = "Open mouth smiley 😃 and two chicken heads followed by a period 🐔🐔.";
final String original = "Open mouth smiley and two chicken heads followed by a period .";
final XStream xStream = new XStream();
final String returned = xStream.toXML(original);
assertEquals("<string>" + expected + "</string>", returned);
}
}
выше тест ищет HTML десятичного представление смайликов, но я буду принимать другие форматы, которые будут работать на MIME.
Я не вижу, как XML-библиотека, которая правильно обрабатывает символы вне BMP, должна иметь проблемы с Emojis (даже если они недавно добавлены в Unicode). Не могли бы вы опубликовать код, демонстрирующий проблему? –
Просто получите библиотеку XML, которая поддерживает Unicode 2.0 (который был опубликован в 1996 году, семнадцать лет назад) или более поздней версии (основная особенность, представляющая интерес для поддержки UTF-16). XStream явно этого не делает; файл отчета об ошибке и магазин для нового. –
@JoachimSauer: Я обновил сообщение – eebbesen