Как лучше сравнить локализованные строки, которые выглядят одинаково, но не - PullRequest
0 голосов
/ 16 июня 2020

У меня есть возможность работать с разными языками, и в последнее время я сталкивался с проблемами при проверке строк. Во многих случаях строки, которые я получил от переводческой группы, чем-то отличаются от строк, которые мы получаем с веб-сайта, даже если они выглядят одинаково.

Например:

import org.apache.commons.codec.binary.StringUtils;

    @Test
    public void test() {
        String actual = "pouze v angličtině.";
        String expected = "pouze v angličtině.";

        byte[] bytesactual = StringUtils.getBytesUtf8(actual);
        byte[] bytesexpected = StringUtils.getBytesUtf8(expected);

        System.out.println(Arrays.toString(bytesactual));
        System.out.println(Arrays.toString(bytesexpected));

        Assert.assertEquals(bytesactual, bytesexpected);        
    }

Тест завершается неудачно с результатом:

[112, 111, 117, 122, 101, 32, 118, -62, -96, 97, 110, 103, 108, 105, -60, -115, 116, 105, 110, -60, -101, 46]
[112, 111, 117, 122, 101, 32, 118, 32, 97, 110, 103, 108, 105, -60, -115, 116, 105, 110, -60, -101, 46]

Тест никогда не проходит, так как после "v" стоит несколько разных символов. Пользователь переднего плана читает то же json, что и я для тестов, но каким-то образом символы были искажены. В настоящее время мой обходной путь - открыть json и скопировать / вставить то, что я получил с веб-сайта, и заменить его, но поскольку это происходит много и много раз, я ищу программное решение c для этой проблемы вместо замена строк json. Любые идеи? Спасибо.

1 Ответ

0 голосов
/ 16 июня 2020

Я бы сказал, что это, скорее всего, из-за кодировки символов, я бы дважды проверил, что кодировка символов во внешнем интерфейсе такая, как ожидалось, и если вы go впереди, чтобы сделать это программно, вы можете затем применить свой собственный набор кодировок правила.

Как правило, все, что выходит за пределы диапазона 0–127 (ascii), вводится наборами символов, которые sh добавляют символы за пределы стандартной таблицы Ascii.

...