X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fstreams%2FBase64.java;h=76b4be49f731e9b2ee1387b0a3190fe9555dbd34;hb=7194ac50b29064a013f177fc9cfc5aaa131a8ec4;hp=9ccd02ce3e39e7da4a0b02e98a75ff2bebd5b219;hpb=f28a134e4d06ee40d62c0c62123fc4799d49d8eb;p=fanfix.git diff --git a/src/be/nikiroo/utils/streams/Base64.java b/src/be/nikiroo/utils/streams/Base64.java index 9ccd02c..76b4be4 100644 --- a/src/be/nikiroo/utils/streams/Base64.java +++ b/src/be/nikiroo/utils/streams/Base64.java @@ -14,6 +14,11 @@ * limitations under the License. */ +/* + * Changes (@author niki): + * - default charset -> UTF-8 + */ + package be.nikiroo.utils.streams; import java.io.UnsupportedEncodingException; @@ -115,7 +120,12 @@ class Base64 { * incorrect padding */ public static byte[] decode(String str, int flags) { - return decode(str.getBytes(), flags); + try{ + return decode(str.getBytes("UTF-8"), flags); + } catch (UnsupportedEncodingException e) { + // All conforming JVM are expected to support UTF-8 + return null; + } } /** @@ -250,7 +260,8 @@ class Base64 { * @return an overestimate for the number of bytes {@code * len} bytes could decode to. */ - public int maxOutputSize(int len) { + @Override + public int maxOutputSize(int len) { return len * 3/4 + 10; } @@ -260,7 +271,8 @@ class Base64 { * @return true if the state machine is still healthy. false if * bad base-64 data has been detected in the input stream. */ - public boolean process(byte[] input, int offset, int len, boolean finish) { + @Override + public boolean process(byte[] input, int offset, int len, boolean finish) { if (this.state == 6) return false; int p = offset; @@ -596,11 +608,13 @@ class Base64 { * @return an overestimate for the number of bytes {@code * len} bytes could encode to. */ - public int maxOutputSize(int len) { + @Override + public int maxOutputSize(int len) { return len * 8/5 + 10; } - public boolean process(byte[] input, int offset, int len, boolean finish) { + @Override + public boolean process(byte[] input, int offset, int len, boolean finish) { // Using local variables makes the encoder about 9% faster. final byte[] alphabet = this.alphabet; final byte[] output = this.output; @@ -628,7 +642,7 @@ class Base64 { ((input[p++] & 0xff) << 8) | (input[p++] & 0xff); tailLen = 0; - }; + } break; case 2: