Zip-файл (созданный с использованием ZipArchiveOutputStream), написанный на ServletOutputStream, искажает имена японских файлов [duplicate]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

27
задан Raedwald 10 April 2015 в 11:58
поделиться

3 ответа

(Обратите внимание, что я использую некоторые из этих терминов свободно / разговорно для более простого объяснения, которое по-прежнему попадает в ключевые моменты.)

Байт может содержать только 256 различных значений, составляющих 8 бит.

Поскольку в наборе символов есть наборы символов, содержащие более 256 символов, в общем случае нельзя сказать, что каждый символ является байтом.

Следовательно, должны быть отображения, описывающие, как превратите каждый символ в набор символов в последовательность байтов. Некоторые символы могут быть сопоставлены одному байту, но другие должны быть сопоставлены с несколькими байтами.

Эти сопоставления являются кодировками, потому что они сообщают вам, как кодировать символы в последовательности байтов.

Что касается Unicode, на очень высоком уровне Unicode является попыткой присвоить каждому уникальному номеру уникальный номер. Очевидно, что это число должно быть чем-то большим, чем байт, так как имеется более 256 символов :) Java использует версию Unicode, где каждому символу назначается 16-битное значение (и поэтому символы Java имеют ширину 16 бит и имеют целочисленные значения от 0 до 65535). Когда вы получаете представление байта символа Java, вы должны указать JVM кодировку, которую вы хотите использовать, чтобы она знала, как выбрать последовательность байтов для символа.

31
ответ дан QuantumMechanic 26 August 2018 в 11:02
поделиться
27
ответ дан bvdb 26 August 2018 в 11:02
поделиться

Кодировка символов - это то, что вы используете для решения проблемы написания программного обеспечения для тех, кто использует другой язык, чем вы.

Вы не знаете, что такое персонажи и как они упорядочены. Поэтому вы не знаете, что строки на этом новом языке будут выглядеть в двоичном и откровенном виде, вам все равно.

У вас есть способ перевода строк с языка, на котором вы говорите, на язык, на котором они говорят (скажем, переводчик). Теперь вам нужна система, способная представлять оба языка в двоичном формате без конфликтов. Кодировка - это система.

Это то, что позволяет вам писать программное обеспечение, которое работает независимо от того, как языки представлены в двоичном формате.

2
ответ дан Carl 26 August 2018 в 11:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: