From d0c81604b6a3ed78961cda73ddb5ccb253202846 Mon Sep 17 00:00:00 2001 From: Frederic Bregier Date: Mon, 11 May 2015 00:07:04 +0200 Subject: [PATCH] Proposal to fix issue #3768 (3.10) Motivations: When using HttpPostRequestEncoder and trying to set an attribute if a charset is defined, currenlty implicit Charset.toStrng() is used, given wrong format. As in Android for UTF-16 = "com.ibm.icu4jni.charset.CharsetICU[UTF-16]". Modifications: Each time charset is used to be printed as its name, charset.name() is used to get the canonical name. Result: Now get "UTF-16" instead. (3.10 version) --- .../netty/handler/codec/http/multipart/DiskFileUpload.java | 2 +- .../handler/codec/http/multipart/HttpPostRequestEncoder.java | 5 +++-- .../netty/handler/codec/http/multipart/MemoryFileUpload.java | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/multipart/DiskFileUpload.java b/codec-http/src/main/java/io/netty/handler/codec/http/multipart/DiskFileUpload.java index 5d2186c80d..1932004dd6 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/multipart/DiskFileUpload.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/multipart/DiskFileUpload.java @@ -129,7 +129,7 @@ public class DiskFileUpload extends AbstractDiskHttpData implements FileUpload { HttpPostBodyUtil.FORM_DATA + "; " + HttpPostBodyUtil.NAME + "=\"" + getName() + "\"; " + HttpPostBodyUtil.FILENAME + "=\"" + filename + "\"\r\n" + HttpHeaders.Names.CONTENT_TYPE + ": " + contentType + - (charset != null? "; " + HttpHeaders.Values.CHARSET + '=' + charset + "\r\n" : "\r\n") + + (charset != null? "; " + HttpHeaders.Values.CHARSET + '=' + charset.name() + "\r\n" : "\r\n") + HttpHeaders.Names.CONTENT_LENGTH + ": " + length() + "\r\n" + "Completed: " + isCompleted() + "\r\nIsInMemory: " + isInMemory() + "\r\nRealFile: " + diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostRequestEncoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostRequestEncoder.java index a940e7d30c..2d24532ec6 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostRequestEncoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostRequestEncoder.java @@ -492,7 +492,7 @@ public class HttpPostRequestEncoder implements ChunkedInput { internal.addValue(HttpHeaders.Names.CONTENT_TYPE + ": " + HttpPostBodyUtil.DEFAULT_TEXT_CONTENT_TYPE + "; " + HttpHeaders.Values.CHARSET + '=' - + localcharset + "\r\n"); + + localcharset.name() + "\r\n"); } // CRLF between body header and data internal.addValue("\r\n"); @@ -644,7 +644,8 @@ public class HttpPostRequestEncoder implements ChunkedInput { internal.addValue("\r\n" + HttpHeaders.Names.CONTENT_TRANSFER_ENCODING + ": " + HttpPostBodyUtil.TransferEncodingMechanism.BINARY.value() + "\r\n\r\n"); } else if (fileUpload.getCharset() != null) { - internal.addValue("; " + HttpHeaders.Values.CHARSET + '=' + fileUpload.getCharset() + "\r\n\r\n"); + internal.addValue("; " + HttpHeaders.Values.CHARSET + '=' + + fileUpload.getCharset().name() + "\r\n\r\n"); } else { internal.addValue("\r\n\r\n"); } diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/multipart/MemoryFileUpload.java b/codec-http/src/main/java/io/netty/handler/codec/http/multipart/MemoryFileUpload.java index a9ad28b1f4..c644e84db2 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/multipart/MemoryFileUpload.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/multipart/MemoryFileUpload.java @@ -123,7 +123,7 @@ public class MemoryFileUpload extends AbstractMemoryHttpData implements FileUplo HttpPostBodyUtil.FORM_DATA + "; " + HttpPostBodyUtil.NAME + "=\"" + getName() + "\"; " + HttpPostBodyUtil.FILENAME + "=\"" + filename + "\"\r\n" + HttpHeaders.Names.CONTENT_TYPE + ": " + contentType + - (charset != null? "; " + HttpHeaders.Values.CHARSET + '=' + charset + "\r\n" : "\r\n") + + (charset != null? "; " + HttpHeaders.Values.CHARSET + '=' + charset.name() + "\r\n" : "\r\n") + HttpHeaders.Names.CONTENT_LENGTH + ": " + length() + "\r\n" + "Completed: " + isCompleted() + "\r\nIsInMemory: " + isInMemory();