Where to get “UTF-8” string literal in Java?

前端 未结 11 836
谎友^
谎友^ 2020-12-02 03:51

I\'m trying to use a constant instead of a string literal in this piece of code:

new InputStreamReader(new FileInputStream(file), \"UTF-8\")
<
相关标签:
11条回答
  • 2020-12-02 04:23

    You can use Charset.defaultCharset() API or file.encoding property.

    But if you want your own constant, you'll need to define it yourself.

    0 讨论(0)
  • 2020-12-02 04:24

    The Google Guava library (which I'd highly recommend anyway, if you're doing work in Java) has a Charsets class with static fields like Charsets.UTF_8, Charsets.UTF_16, etc.

    Since Java 7 you should just use java.nio.charset.StandardCharsets instead for comparable constants.

    Note that these constants aren't strings, they're actual Charset instances. All standard APIs that take a charset name also have an overload that take a Charset object which you should use instead.

    0 讨论(0)
  • 2020-12-02 04:24

    If you are using OkHttp for Java/Android you can use the following constant:

    import com.squareup.okhttp.internal.Util;
    
    Util.UTF_8; // Charset
    Util.UTF_8.name(); // String
    
    0 讨论(0)
  • 2020-12-02 04:24

    Class org.apache.commons.lang3.CharEncoding.UTF_8 is deprecated after Java 7 introduced java.nio.charset.StandardCharsets

    • @see JRE character encoding names
    • @since 2.1
    • @deprecated Java 7 introduced {@link java.nio.charset.StandardCharsets}, which defines these constants as
    • {@link Charset} objects. Use {@link Charset#name()} to get the string values provided in this class.
    • This class will be removed in a future release.
    0 讨论(0)
  • 2020-12-02 04:34

    In Java 1.7+, java.nio.charset.StandardCharsets defines constants for Charset including UTF_8.

    import java.nio.charset.StandardCharsets;
    
    ...
    
    StandardCharsets.UTF_8.name();
    

    For Android: minSdk 19

    0 讨论(0)
  • 2020-12-02 04:37

    Constant definitions for the standard. These charsets are guaranteed to be available on every implementation of the Java platform. since 1.7

     package java.nio.charset;
     Charset utf8 = StandardCharsets.UTF_8;
    
    0 讨论(0)
提交回复
热议问题