2013-10-24 2 views
0

У меня есть центральный репозиторий, где хранятся некоторые двоичные файлы (zip). Клиент может загружать определенные файлы из этого репозитория, разархивировать их локально, а затем помещает результирующие файлы в указанную папку.Windows ли когда-либо меняет кодировку при перемещении или чтении?

В какой-то момент это изменяет кодировку одного из файлов в сохраненной ZIP-папке. У меня нет объяснений, почему это происходит, но это так. Мои собственные файлы находятся в UTF-8 и содержат символ, кодовая точка которого представлена ​​как C3B3 в шестнадцатеричном редакторе. Клиент изменяет кодировку хотя бы одного из этих файлов на Windows-1252, так что символ представляется как F3. Это происходит на их машине, но не на моей, для той же операции.

Любые идеи?

ответ

2

Все это проверено, 0xc3 0xb3 - это кодировка utf-8 для - и это действительно 0xf3 на кодовой странице 1252. У архивов Zip есть осведомленность о кодовой странице, она хранит строки. Но это относится только к словарю для архива, именам файлов. И возможный пароль. Никогда в самих файлах с застежкой-молнией они просто обрабатываются как бинарные капли байтов.

Скорее всего, сценарий заключается в том, что любая программа, которую пользователь использует для чтения файла, делает это преобразование. Может быть, например, Блокнот. Очень длинная дистанция заключается в том, что unzipper, который использует клиент, как-то знает, что zipped-файл является текстовым файлом, что маловероятно. Вам нужно будет спросить клиента, что именно они делают с архивом .zip.

+0

Оказалось, что один из моих сотрудников принял неосторожное решение, выполнив распаковку, используя фрагмент, найденный в Интернете. В определенный момент он преобразует поток байтов в поток символов, используя кодировку платформы по умолчанию. – VforVincent

+0

Tsk, tsk. Не догадался, что выстрел на дальние расстояния распахнется :) –

Смежные вопросы