[
https://issues.apache.org/jira/browse/FLINK-3921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15477387#comment-15477387
]
ASF GitHub Bot commented on FLINK-3921:
---------------------------------------
Github user greghogan commented on a diff in the pull request:
https://github.com/apache/flink/pull/2060#discussion_r78203358
--- Diff:
flink-core/src/main/java/org/apache/flink/types/parser/FieldParser.java ---
@@ -75,8 +76,30 @@
/** Invalid Boolean value **/
BOOLEAN_INVALID
}
-
+
+ private Charset charset = Charset.forName("US-ASCII");
+
private ParseErrorState errorState = ParseErrorState.NONE;
+
+ /**
+ * Parses the value of a field from the byte array.
+ * The start position within the byte array and the array's valid
length is given.
+ * The content of the value is delimited by a field delimiter.
+ *
+ * @param bytes The byte array that holds the value.
+ * @param startPos The index where the field starts
+ * @param limit The limit unto which the byte contents is valid for the
parser. The limit is the
+ * position one after the last valid byte.
+ * @param delim The field delimiter character
+ * @param reuse An optional reusable field to hold the value
+ * @param charset The charset to parse with
+ *
+ * @return The index of the next delimiter, if the field was parsed
correctly. A value less than 0 otherwise.
+ */
+ public int parseField(byte[] bytes, int startPos, int limit, byte[]
delim, T reuse, Charset charset){
+ this.charset = charset;
--- End diff --
Is this method needed? `GenericCsvInputFormat.open` can `setCharset` on
each newly instantiated `FieldParser`, and in the case where a user decided to
change charset on an open file `GenericCsvInputFormat.setCharset` could go
through and `setCharset` on the list of `FieldParser`s.
> StringParser not specifying encoding to use
> -------------------------------------------
>
> Key: FLINK-3921
> URL: https://issues.apache.org/jira/browse/FLINK-3921
> Project: Flink
> Issue Type: Improvement
> Components: Core
> Affects Versions: 1.0.3
> Reporter: Tatu Saloranta
> Assignee: Rekha Joshi
> Priority: Trivial
>
> Class `flink.types.parser.StringParser` has javadocs indicating that contents
> are expected to be Ascii, similar to `StringValueParser`. That makes sense,
> but when constructing actual instance, no encoding is specified; on line 66
> f.ex:
> this.result = new String(bytes, startPos+1, i - startPos - 2);
> which leads to using whatever default platform encoding is. If contents
> really are always Ascii (would not count on that as parser is used from CSV
> reader), not a big deal, but it can lead to the usual Latin-1-VS-UTF-8 issues.
> So I think that encoding should be explicitly specified, whatever is to be
> used: javadocs claim ascii, so could be "us-ascii", but could well be UTF-8
> or even ISO-8859-1.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)