在Java中何处获得“UTF-8”string文字?

我想在这段代码中使用常量而不是string文字:

new InputStreamReader(new FileInputStream(file), "UTF-8") 

代码中经常会出现"UTF-8" ,并且会更好地引用一些static finalvariables。 你知道我可以在JDK中find这样一个variables吗?

顺便说一句,第二个想法,这样的常量是不好的devise: 公共静态文字…不是数据复制的解决scheme

在Java 1.7+中, java.nio.charset.StandardCharsets为包括UTF_8 Charset UTF_8定义了常量。

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

对于Android:minSdk 19

现在我从commons-lang使用org.apache.commons.lang3.CharEncoding.UTF_8常量。

Google Guava库(如果你正在使用Java工作,我会强烈build议)有一个Charsets类,包含Charsets.UTF_8Charsets.UTF_16等静态字段。

从Java 7开始,您应该使用java.nio.charset.StandardCharsets来代替可比较的常量。

请注意,这些常量不是string,它们是实际的Charset实例。 所有采用字符集名称的标准API也都有一个重载,它需要使用您应该使用的Charset对象。

如果这个页面出现在某些人的网页search中,从Java 1.7开始,现在你可以使用java.nio.charset.StandardCharsets来访问标准字符集的常量定义。

没有(至less在标准的Java库中)。 字符集因平台而异,所以在Java中没有标准的列表。

有一些第三方库包含这些常量。 其中一个是Guava(谷歌核心库): http : //guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Charsets.html

您可以使用Charset.defaultCharset() API或file.encoding属性。

但是如果你想要自己不变的话,你需要自己定义它。

这个常量在类org.apache.commons.codec.CharEncoding也是可用的(例如: UTF-16US-ASCII等等)。

如果您使用OkHttp for Java / Android,则可以使用以下常量:

 import com.squareup.okhttp.internal.Util; Util.UTF_8; // Charset Util.UTF_8.name(); // String