• Joe Tsai's avatar
    archive/zip: add FileHeader.NonUTF8 field · 4fcc8359
    Joe Tsai authored
    The NonUTF8 field provides users with a way to explictly tell the
    ZIP writer to avoid setting the UTF-8 flag.
    This is necessary because many readers:
    	1) (Still) do not support UTF-8
    	2) And use the local system encoding instead
    
    Thus, even though character encodings other than CP-437 and UTF-8
    are not officially supported by the ZIP specification, pragmatically
    the world has permitted use of them.
    
    When a non-standard encoding is used, it is the user's responsibility
    to ensure that the target system is expecting the encoding used
    (e.g., producing a ZIP file you know is used on a Chinese version of Windows).
    
    We adjust the detectUTF8 function to account for Shift-JIS and EUC-KR
    not being identical to ASCII for two characters.
    
    We don't need an API for users to explicitly specify that they are encoding
    with UTF-8 since all single byte characters are compatible with all other
    common encodings (Windows-1256, Windows-1252, Windows-1251, Windows-1250,
    IEC-8859, EUC-KR, KOI8-R, Latin-1, Shift-JIS, GB-2312, GBK) except for
    the non-printable characters and the backslash character (all of which
    are invalid characters in a path name anyways).
    
    Fixes #10741
    
    Change-Id: I9004542d1d522c9137973f1b6e2b623fa54dfd66
    Reviewed-on: https://go-review.googlesource.com/75592
    Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
    Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    4fcc8359
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
context Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
plugin Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
vendor/golang_org/x Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...