Zips contain bytes, not characters. Files contain bytes, not characters. There's no need for encoding when going from one to another. Suspect that your OS X file viewer understands unicode and your windows one doesn't. If you're reading the unzipped file with perl, you may need to binmode $IN, ':utf8'