在Java中何处获得“UTF-8”string文字?
我想在这段代码中使用常量而不是string文字:
new InputStreamReader(new FileInputStream(file), "UTF-8")
代码中经常会出现"UTF-8"
,并且会更好地引用一些static final
variables。 你知道我可以在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_8
, Charsets.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-16
, US-ASCII
等等)。
如果您使用OkHttp for Java / Android,则可以使用以下常量:
import com.squareup.okhttp.internal.Util; Util.UTF_8; // Charset Util.UTF_8.name(); // String